We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I think the root cause is that pointer to types.TargetConfig is shared between multiple gogoutines without protection.
types.TargetConfig
One fix could be to either add mutex to types.TargetConfig and use it on all the accesses or send copy between goroutines.
mutex
================== WARNING: DATA RACE Read at 0x00c000eb0700 by goroutine 180: google.golang.org/grpc/credentials.tlsCreds.Info() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/credentials/tls.go:69 +0xd3 google.golang.org/grpc/credentials.(*tlsCreds).Info() <autogenerated>:1 +0x29 google.golang.org/grpc.(*ClientConn).validateTransportCredentials() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:470 +0x176 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:195 +0xf79 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c000eb0700 by goroutine 152: crypto/tls.(*Config).Clone() /usr/local/go/src/crypto/tls/common.go:833 +0xca google.golang.org/grpc/internal/credentials.CloneTLSConfig() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/internal/credentials/util.go:51 +0x44 google.golang.org/grpc/credentials.NewTLS() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/credentials/tls.go:143 +0x45 github.com/openconfig/gnmic/pkg/types.(*TargetConfig).GrpcDialOptions() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:132 +0x48d github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:81 +0x13d github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 180 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 152 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d
Build gnmic with -race flag and run gnmic with server mode and you could see this at the startup
-race
gnmic
v0.34.3
./gnmic --config configs/jeff_gnmic-server.yaml subscribe 2023/12/04 23:15:35.269862 [gnmic] version=dev, commit=none, date=unknown, gitURL=, docs=https://gnmic.openconfig.net 2023/12/04 23:15:35.269905 [gnmic] using config file "configs/jeff_gnmic-server.yaml" 1 {"name":"openconfig-arrcus","encoding":"proto","stream-subscriptions":[{"paths":["openconfig-interfaces:interfaces/interface","openconfig-platform:components/component","openconfig-network-instance:network-instances","openconfig-lldp:lldp/interfaces/interface/neighbors","openconfig-bfd:bfd/interfaces/interface","arcos-hardware:hardware/units","openconfig-system:system/arcos-openconfig-system-augments:version/state/sw-version","openconfig-system:system/state/hostname"],"stream-mode":"sample","sample-interval":30000000000},{"paths":["openconfig-interfaces:interfaces/interface/state/admin-status","openconfig-interfaces:interfaces/interface/state/oper-status","openconfig-interfaces:interfaces/interface/state/mtu","openconfig-interfaces:interfaces/interface/state/type","openconfig-interfaces:interfaces/interface/state/description","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/session-state","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/enabled"],"stream-mode":"on-change"}]} 2 {"name":"openconfig-arrcus","mode":"stream","stream-mode":"target-defined","encoding":"proto","stream-subscriptions":[{"paths":["openconfig-interfaces:interfaces/interface","openconfig-platform:components/component","openconfig-network-instance:network-instances","openconfig-lldp:lldp/interfaces/interface/neighbors","openconfig-bfd:bfd/interfaces/interface","arcos-hardware:hardware/units","openconfig-system:system/arcos-openconfig-system-augments:version/state/sw-version","openconfig-system:system/state/hostname"],"stream-mode":"sample","sample-interval":30000000000},{"paths":["openconfig-interfaces:interfaces/interface/state/admin-status","openconfig-interfaces:interfaces/interface/state/oper-status","openconfig-interfaces:interfaces/interface/state/mtu","openconfig-interfaces:interfaces/interface/state/type","openconfig-interfaces:interfaces/interface/state/description","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/session-state","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/enabled"],"stream-mode":"on-change"}]} 3 {"name":"openconfig-arrcus","mode":"stream","stream-mode":"target-defined","encoding":"proto","stream-subscriptions":[{"paths":["openconfig-interfaces:interfaces/interface","openconfig-platform:components/component","openconfig-network-instance:network-instances","openconfig-lldp:lldp/interfaces/interface/neighbors","openconfig-bfd:bfd/interfaces/interface","arcos-hardware:hardware/units","openconfig-system:system/arcos-openconfig-system-augments:version/state/sw-version","openconfig-system:system/state/hostname"],"stream-mode":"sample","sample-interval":30000000000},{"paths":["openconfig-interfaces:interfaces/interface/state/admin-status","openconfig-interfaces:interfaces/interface/state/oper-status","openconfig-interfaces:interfaces/interface/state/mtu","openconfig-interfaces:interfaces/interface/state/type","openconfig-interfaces:interfaces/interface/state/description","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/session-state","openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/arcos-openconfigbgp-augments:all-neighbors/all-neighbor/state/enabled"],"stream-mode":"on-change"}]} 1 {"name":"pan-interface","encoding":"json","stream-subscriptions":[{"paths":["/interfaces"],"stream-mode":"sample","sample-interval":30000000000}]} 2 {"name":"pan-interface","mode":"stream","stream-mode":"target-defined","encoding":"json","stream-subscriptions":[{"paths":["/interfaces"],"stream-mode":"sample","sample-interval":30000000000}]} 3 {"name":"pan-interface","mode":"stream","stream-mode":"target-defined","encoding":"json","stream-subscriptions":[{"paths":["/interfaces"],"stream-mode":"sample","sample-interval":30000000000}]} 2023/12/04 23:15:35.271453 [config] validating processor "proc-add-tags" config 2023/12/04 23:15:35.271469 [config] validating processor "port-state" config 2023/12/04 23:15:35.271481 [config] validating processor "bgp-session-state" config 2023/12/04 23:15:35.271493 [config] validating processor "component-states" config 2023/12/04 23:15:35.326534 [gnmic] starting output type prometheus 2023/12/04 23:15:35.329539 [gnmic] queuing target "pan2" 2023/12/04 23:15:35.330705 [gnmic] queuing target "pan3" 2023/12/04 23:15:35.330592 [gnmic] queuing target "pan6" 2023/12/04 23:15:35.329628 [gnmic] queuing target "use4-ngn.gv52.lab.equinix.com:9339" 2023/12/04 23:15:35.330924 [gnmic] queuing target "pan7" 2023/12/04 23:15:35.330179 [gnmic] queuing target "pan4" 2023/12/04 23:15:35.330517 [gnmic] queuing target "pan1" 2023/12/04 23:15:35.331091 [gnmic] queuing target "pan8" 2023/12/04 23:15:35.331119 [gnmic] subscribing to target: "pan2" 2023/12/04 23:15:35.332350 [gnmic] starting target "pan2" listener 2023/12/04 23:15:35.332335 [gnmic] queuing target "bb1-ngn.gv51.lab.equinix.com:9339" 2023/12/04 23:15:35.332491 [gnmic] subscribing to target: "pan3" 2023/12/04 23:15:35.332549 [gnmic] queuing target "sit-tb1-a2.ot1.tlab.equinix.com:9339" 2023/12/04 23:15:35.332706 [gnmic] starting target "pan3" listener 2023/12/04 23:15:35.332767 [gnmic] subscribing to target: "pan6" 2023/12/04 23:15:35.332976 [gnmic] starting target "pan6" listener 2023/12/04 23:15:35.333295 [gnmic] queuing target "pan9" 2023/12/04 23:15:35.333317 [gnmic] queuing target "pan5" 2023/12/04 23:15:35.333306 [gnmic] queuing target "pan10" 2023/12/04 23:15:35.333296 [gnmic] queuing target "sit-tb1-a1.ot1.tlab.equinix.com:9339" 2023/12/04 23:15:35.333325 [gnmic] queuing target "sit-tb1-e14.dc5.tlab.equinix.com:9339" 2023/12/04 23:15:35.333562 [gnmic] added event processor 'port-state' of type=event-strings to file output ================== WARNING: DATA RACE Write at 0x00c000bd65e0 by goroutine 119: runtime.slicecopy() /usr/local/go/src/runtime/slice.go:310 +0x0 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:85 +0x1fc github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Previous write at 0x00c000bd65e0 by goroutine 117: runtime.slicecopy() /usr/local/go/src/runtime/slice.go:310 +0x0 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:85 +0x1fc github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 119 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d Goroutine 117 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== ================== WARNING: DATA RACE Write at 0x00c000bd65f0 by goroutine 119: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:86 +0x316 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Previous read at 0x00c000bd65f0 by goroutine 122: google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:164 +0x547 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Goroutine 119 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d Goroutine 122 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 ================== ================== WARNING: DATA RACE Read at 0x00c0007060f8 by goroutine 122: google.golang.org/grpc.(*funcDialOption).apply() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:119 +0x30 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:178 +0x68f github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c0007060f8 by goroutine 121: google.golang.org/grpc.newFuncDialOption() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:124 +0x36e google.golang.org/grpc.WithTransportCredentials() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:374 +0x2ef github.com/openconfig/gnmic/pkg/types.(*TargetConfig).GrpcDialOptions() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x3b3 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:81 +0x13d github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 122 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 121 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== ================== WARNING: DATA RACE Read at 0x00c00118a028 by goroutine 122: google.golang.org/grpc.(*funcDialOption).apply() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:119 +0x30 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:178 +0x68f github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c00118a028 by goroutine 119: google.golang.org/grpc.newFuncDialOption() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:124 +0x26a google.golang.org/grpc.WithBlock() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:318 +0x251 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:86 +0x29b github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 122 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 119 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== ================== WARNING: DATA RACE Write at 0x00c000bd65f0 by goroutine 121: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:86 +0x316 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Previous write at 0x00c000bd65f0 by goroutine 117: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:86 +0x316 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 121 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d Goroutine 117 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== 2023/12/04 23:15:35.337047 [gnmic] starting target "use4-ngn.gv52.lab.equinix.com:9339" listener 2023/12/04 23:15:35.337102 [gnmic] subscribing to target: "use4-ngn.gv52.lab.equinix.com:9339" 2023/12/04 23:15:35.337263 [gnmic] subscribing to target: "pan7" 2023/12/04 23:15:35.337272 [gnmic] starting target "pan7" listener 2023/12/04 23:15:35.337471 [gnmic] starting target "pan4" listener 2023/12/04 23:15:35.337470 [gnmic] subscribing to target: "pan4" ================== 2023/12/04 23:15:35.337571 [gnmic] starting target "pan1" listener WARNING: DATA RACE Write at 0x00c000bd65f0 by goroutine 130: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:86 +0x316 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Previous read at 0x00c000bd65f0 by goroutine 122: google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:177 +0x672 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c 2023/12/04 23:15:35.337614 [gnmic] subscribing to target: "pan1" github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Goroutine 130 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d Goroutine 122 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 ================== 2023/12/04 23:15:35.337873 [gnmic] starting target "pan8" listener 2023/12/04 23:15:35.337935 [gnmic] subscribing to target: "bb1-ngn.gv51.lab.equinix.com:9339" 2023/12/04 23:15:35.338125 [gnmic] starting target "bb1-ngn.gv51.lab.equinix.com:9339" listener 2023/12/04 23:15:35.337926 [gnmic] subscribing to target: "pan8" 2023/12/04 23:15:35.338255 [gnmic] starting target "sit-tb1-a2.ot1.tlab.equinix.com:9339" listener ================== WARNING: DATA RACE 2023/12/04 23:15:35.338312 [gnmic] subscribing to target: "sit-tb1-a2.ot1.tlab.equinix.com:9339" Write at 0x00c000bd65e0 by goroutine 142: runtime.slicecopy() /usr/local/go/src/runtime/slice.go:310 +0x0 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:85 +0x1fc github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Previous read at 0x00c000bd65e0 by goroutine 145: google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:164 +0x547 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Goroutine 142 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d Goroutine 145 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 ================== 2023/12/04 23:15:35.338578 [gnmic] starting target "pan9" listener 2023/12/04 23:15:35.338771 [gnmic] starting target "pan5" listener 2023/12/04 23:15:35.338683 [gnmic] subscribing to target: "pan9" 2023/12/04 23:15:35.338690 [gnmic] subscribing to target: "pan5" 2023/12/04 23:15:35.338818 [gnmic] added event processor 'bgp-session-state' of type=event-strings to file output 2023/12/04 23:15:35.339175 [gnmic] subscribing to target: "pan10" 2023/12/04 23:15:35.339161 [gnmic] starting target "pan10" listener 2023/12/04 23:15:35.339280 [gnmic] starting target "sit-tb1-a1.ot1.tlab.equinix.com:9339" listener 2023/12/04 23:15:35.339383 [gnmic] starting target "sit-tb1-e14.dc5.tlab.equinix.com:9339" listener 2023/12/04 23:15:35.339339 [gnmic] subscribing to target: "sit-tb1-a1.ot1.tlab.equinix.com:9339" 2023/12/04 23:15:35.339414 [gnmic] subscribing to target: "sit-tb1-e14.dc5.tlab.equinix.com:9339" ================== WARNING: DATA RACE Read at 0x00c00058c028 by goroutine 176: google.golang.org/grpc.(*funcDialOption).apply() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:119 +0x30 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:178 +0x68f github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c00058c028 by goroutine 152: google.golang.org/grpc.newFuncDialOption() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:124 +0x531 google.golang.org/grpc.WithTransportCredentials() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/dialoptions.go:374 +0x48e github.com/openconfig/gnmic/pkg/types.(*TargetConfig).GrpcDialOptions() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:132 +0x280 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:81 +0x13d github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 176 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 152 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== ================== WARNING: DATA RACE Read at 0x00c00058c020 by goroutine 180: google.golang.org/grpc/credentials.(*tlsCreds).Info() <autogenerated>:1 +0x6d google.golang.org/grpc.(*ClientConn).validateTransportCredentials() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:470 +0x176 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:195 +0xf79 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c00058c020 by goroutine 152: google.golang.org/grpc/credentials.NewTLS() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/credentials/tls.go:143 +0xba github.com/openconfig/gnmic/pkg/types.(*TargetConfig).GrpcDialOptions() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:132 +0x48d github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:81 +0x13d github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 180 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 152 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== 2023/12/04 23:15:35.341542 [gnmic] added event processor 'component-states' of type=event-strings to file output ================== WARNING: DATA RACE Read at 0x00c000eb0700 by goroutine 180: google.golang.org/grpc/credentials.tlsCreds.Info() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/credentials/tls.go:69 +0xd3 google.golang.org/grpc/credentials.(*tlsCreds).Info() <autogenerated>:1 +0x29 google.golang.org/grpc.(*ClientConn).validateTransportCredentials() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:470 +0x176 google.golang.org/grpc.DialContext() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/clientconn.go:195 +0xf79 github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func1() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:121 +0x64c github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient.func3() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:133 +0x4f Previous write at 0x00c000eb0700 by goroutine 152: crypto/tls.(*Config).Clone() /usr/local/go/src/crypto/tls/common.go:833 +0xca google.golang.org/grpc/internal/credentials.CloneTLSConfig() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/internal/credentials/util.go:51 +0x44 google.golang.org/grpc/credentials.NewTLS() /home/equinix/go/pkg/mod/google.golang.org/[email protected]/credentials/tls.go:143 +0x45 github.com/openconfig/gnmic/pkg/types.(*TargetConfig).GrpcDialOptions() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:132 +0x48d github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:81 +0x13d github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 180 (running) created at: github.com/openconfig/gnmic/pkg/target.(*Target).CreateGNMIClient() /home/equinix/go/pkg/mod/github.com/openconfig/gnmic/pkg/[email protected]/target.go:96 +0x573 github.com/openconfig/gnmic/pkg/app.(*App).clientSubscribe() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:208 +0xee6 github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream.func1() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:79 +0x64 Goroutine 152 (running) created at: github.com/openconfig/gnmic/pkg/app.(*App).TargetSubscribeStream() /home/equinix/development/gnmic/pkg/app/gnmi_client_subscribe.go:78 +0xa77 github.com/openconfig/gnmic/pkg/app.(*App).subscribeStream() /home/equinix/development/gnmic/pkg/app/subscribe.go:136 +0xbd github.com/openconfig/gnmic/pkg/app.(*App).startIO.func3() /home/equinix/development/gnmic/pkg/app/subscribe.go:299 +0x5d ================== 2023/12/04 23:15:35.344002 [prometheus_output:prometheus] initialized prometheus output: {"name":"prometheus","listen":":9804","path":"/metrics","expiration":60000000000,"strings-as-labels":true,"event-processors":["port-state","bgp-session-state","component-states"],"timeout":10000000000,"num-workers":1,"enable-metrics":true} 2023/12/04 23:15:35.349894 [gnmic] target "pan3" gNMI client created 2023/12/04 23:15:35.349909 [gnmic] target "pan6" gNMI client created 2023/12/04 23:15:35.350006 [gnmic] target "pan2" gNMI client created 2023/12/04 23:15:35.350157 [gnmic] target "pan7" gNMI client created 2023/12/04 23:15:35.350251 [gnmic] target "pan4" gNMI client created 2023/12/04 23:15:35.350368 [gnmic] target "pan8" gNMI client created 2023/12/04 23:15:35.350438 [gnmic] target "pan1" gNMI client created 2023/12/04 23:15:35.350086 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan2 2023/12/04 23:15:35.349951 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan3 2023/12/04 23:15:35.350459 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan8 2023/12/04 23:15:35.350018 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan6 2023/12/04 23:15:35.350309 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan4 2023/12/04 23:15:35.350530 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan1 2023/12/04 23:15:35.350215 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"interfaces"}} mode:SAMPLE sample_interval:30000000000}}', mode='STREAM', encoding='JSON', to pan7 2023/12/04 23:15:35.357289 [cache:oc] target "pan1" added to local cache "pan-interface" 2023/12/04 23:15:35.357695 [cache:oc] target "pan6" added to local cache "pan-interface" 2023/12/04 23:15:35.358169 [cache:oc] target "pan4" added to local cache "pan-interface" 2023/12/04 23:15:35.360894 [cache:oc] target "pan7" added to local cache "pan-interface" 2023/12/04 23:15:35.361698 [cache:oc] target "pan8" added to local cache "pan-interface" 2023/12/04 23:15:35.362043 [cache:oc] target "pan2" added to local cache "pan-interface" 2023/12/04 23:15:35.362757 [cache:oc] target "pan3" added to local cache "pan-interface" 2023/12/04 23:15:35.447187 [gnmic] target "sit-tb1-a2.ot1.tlab.equinix.com:9339" gNMI client created 2023/12/04 23:15:35.447639 [gnmic] target "sit-tb1-a1.ot1.tlab.equinix.com:9339" gNMI client created 2023/12/04 23:15:35.447309 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-platform:components"} elem:{name:"component"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-lldp:lldp"} elem:{name:"interfaces"} elem:{name:"interface"} elem:{name:"neighbors"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-bfd:bfd"} elem:{name:"interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"arcos-hardware:hardware"} elem:{name:"units"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"arcos-openconfig-system-augments:version"} elem:{name:"state"} elem:{name:"sw-version"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"state"} elem:{name:"hostname"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"admin-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"oper-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"mtu"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"type"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"description"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"session-state"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"enabled"}} mode:ON_CHANGE} encoding:PROTO}', mode='STREAM', encoding='PROTO', to sit-tb1-a2.ot1.tlab.equinix.com:9339 2023/12/04 23:15:35.447688 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-platform:components"} elem:{name:"component"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-lldp:lldp"} elem:{name:"interfaces"} elem:{name:"interface"} elem:{name:"neighbors"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-bfd:bfd"} elem:{name:"interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"arcos-hardware:hardware"} elem:{name:"units"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"arcos-openconfig-system-augments:version"} elem:{name:"state"} elem:{name:"sw-version"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"state"} elem:{name:"hostname"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"admin-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"oper-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"mtu"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"type"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"description"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"session-state"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"enabled"}} mode:ON_CHANGE} encoding:PROTO}', mode='STREAM', encoding='PROTO', to sit-tb1-a1.ot1.tlab.equinix.com:9339 2023/12/04 23:15:35.449684 [gnmic] target "sit-tb1-e14.dc5.tlab.equinix.com:9339" gNMI client created 2023/12/04 23:15:35.449745 [gnmic] sending gNMI SubscribeRequest: subscribe='subscribe:{subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-platform:components"} elem:{name:"component"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-lldp:lldp"} elem:{name:"interfaces"} elem:{name:"interface"} elem:{name:"neighbors"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-bfd:bfd"} elem:{name:"interfaces"} elem:{name:"interface"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"arcos-hardware:hardware"} elem:{name:"units"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"arcos-openconfig-system-augments:version"} elem:{name:"state"} elem:{name:"sw-version"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-system:system"} elem:{name:"state"} elem:{name:"hostname"}} mode:SAMPLE sample_interval:30000000000} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"admin-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"oper-status"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"mtu"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"type"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-interfaces:interfaces"} elem:{name:"interface"} elem:{name:"state"} elem:{name:"description"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"session-state"}} mode:ON_CHANGE} subscription:{path:{elem:{name:"openconfig-network-instance:network-instances"} elem:{name:"network-instance"} elem:{name:"protocols"} elem:{name:"protocol"} elem:{name:"bgp"} elem:{name:"arcos-openconfigbgp-augments:all-neighbors"} elem:{name:"all-neighbor"} elem:{name:"state"} elem:{name:"enabled"}} mode:ON_CHANGE} encoding:PROTO}', mode='STREAM', encoding='PROTO', to sit-tb1-e14.dc5.tlab.equinix.com:9339 10.196.21.67 - - [04/Dec/2023:23:15:35 +0000] "GET /metrics HTTP/1.1" 200 1600 10.196.21.67 - - [04/Dec/2023:23:15:39 +0000] "GET /metrics HTTP/1.1" 200 1611 10.196.21.67 - - [04/Dec/2023:23:15:45 +0000] "GET /metrics HTTP/1.1" 200 1606 10.196.21.67 - - [04/Dec/2023:23:15:49 +0000] "GET /metrics HTTP/1.1" 200 1612 10.196.21.67 - - [04/Dec/2023:23:15:55 +0000] "GET /metrics HTTP/1.1" 200 1608 10.196.21.67 - - [04/Dec/2023:23:15:59 +0000] "GET /metrics HTTP/1.1" 200 1607 10.196.21.67 - - [04/Dec/2023:23:16:05 +0000] "GET /metrics HTTP/1.1" 200 1607 2023/12/04 23:16:05.490400 [cache:oc] target "sit-tb1-a1.ot1.tlab.equinix.com" added to local cache "openconfig-arrcus" 2023/12/04 23:16:05.504777 [cache:oc] target "sit-tb1-e14.dc5.tlab.equinix.com" added to local cache "openconfig-arrcus" 2023/12/04 23:16:05.512877 [cache:oc] target "sit-tb1-a2.ot1.tlab.equinix.com" added to local cache "openconfig-arrcus" 10.196.21.67 - - [04/Dec/2023:23:16:09 +0000] "GET /metrics HTTP/1.1" 200 1685 10.196.21.67 - - [04/Dec/2023:23:16:15 +0000] "GET /metrics HTTP/1.1" 200 1688 10.196.21.67 - - [04/Dec/2023:23:16:19 +0000] "GET /metrics HTTP/1.1" 200 1690
The text was updated successfully, but these errors were encountered:
No branches or pull requests
I think the root cause is that pointer to
types.TargetConfig
is shared between multiple gogoutines without protection.One fix could be to either add
mutex
totypes.TargetConfig
and use it on all the accesses or send copy between goroutines.Repo
Build gnmic with
-race
flag and rungnmic
with server mode and you could see this at the startupGNMIC version
v0.34.3
Full Logs:
The text was updated successfully, but these errors were encountered: