@@ -23,25 +23,26 @@ import (
2323)
2424
2525type DataPlaneStatus struct {
26- messagePipeline core.MessagePipeInterface
27- ctx context.Context
28- sendStatus chan bool
29- healthTicker * time.Ticker
30- interval time.Duration
31- meta * proto.Metadata
32- binary core.NginxBinary
33- env core.Environment
34- version string
35- tags * []string
36- configDirs string
37- lastSendDetails time.Time
38- envHostInfo * proto.HostInfo
39- reportInterval time.Duration
40- softwareDetails map [string ]* proto.DataplaneSoftwareDetails
41- nginxConfigActivityStatuses map [string ]* proto.AgentActivityStatus
42- softwareDetailsMutex sync.RWMutex
43- structMu sync.RWMutex
44- processes []* core.Process
26+ messagePipeline core.MessagePipeInterface
27+ ctx context.Context
28+ sendStatus chan bool
29+ healthTicker * time.Ticker
30+ interval time.Duration
31+ meta * proto.Metadata
32+ binary core.NginxBinary
33+ env core.Environment
34+ version string
35+ tags * []string
36+ configDirs string
37+ lastSendDetails time.Time
38+ envHostInfo * proto.HostInfo
39+ reportInterval time.Duration
40+ softwareDetails map [string ]* proto.DataplaneSoftwareDetails
41+ nginxConfigActivityStatuses map [string ]* proto.AgentActivityStatus
42+ nginxConfigActivityStatusesMutex sync.RWMutex
43+ softwareDetailsMutex sync.RWMutex
44+ structMu sync.RWMutex
45+ processes []* core.Process
4546}
4647
4748const (
@@ -81,7 +82,9 @@ func (dps *DataPlaneStatus) Init(pipeline core.MessagePipeInterface) {
8182
8283func (dps * DataPlaneStatus ) Close () {
8384 log .Info ("DataPlaneStatus is wrapping up" )
85+ dps .nginxConfigActivityStatusesMutex .Lock ()
8486 dps .nginxConfigActivityStatuses = nil
87+ dps .nginxConfigActivityStatusesMutex .Unlock ()
8588 dps .softwareDetailsMutex .Lock ()
8689 dps .softwareDetails = nil
8790 dps .softwareDetailsMutex .Unlock ()
@@ -145,7 +148,9 @@ func (dps *DataPlaneStatus) Subscriptions() []string {
145148func (dps * DataPlaneStatus ) updateNginxConfigActivityStatuses (newAgentActivityStatus * proto.AgentActivityStatus ) {
146149 log .Tracef ("DataplaneStatus: Updating nginxConfigActivityStatuses with %v" , newAgentActivityStatus )
147150 if _ , ok := newAgentActivityStatus .GetStatus ().(* proto.AgentActivityStatus_NginxConfigStatus ); ok {
151+ dps .nginxConfigActivityStatusesMutex .Lock ()
148152 dps .nginxConfigActivityStatuses [newAgentActivityStatus .GetNginxConfigStatus ().GetNginxId ()] = newAgentActivityStatus
153+ dps .nginxConfigActivityStatusesMutex .Unlock ()
149154 }
150155}
151156
@@ -184,6 +189,8 @@ func (dps *DataPlaneStatus) healthGoRoutine(pipeline core.MessagePipeInterface)
184189func (dps * DataPlaneStatus ) dataplaneStatus (forceDetails bool ) * proto.DataplaneStatus {
185190 forceDetails = forceDetails || time .Now ().UTC ().Add (- dps .reportInterval ).After (dps .lastSendDetails )
186191
192+ dps .nginxConfigActivityStatusesMutex .Lock ()
193+ defer dps .nginxConfigActivityStatusesMutex .Unlock ()
187194 agentActivityStatuses := []* proto.AgentActivityStatus {}
188195 for _ , nginxConfigActivityStatus := range dps .nginxConfigActivityStatuses {
189196 agentActivityStatuses = append (agentActivityStatuses , nginxConfigActivityStatus )
0 commit comments