@@ -9,15 +9,14 @@ package plugins
99
1010import (
1111 "context"
12- "strings"
13-
1412 "github.com/nginx/agent/sdk/v2"
1513 agent_config "github.com/nginx/agent/sdk/v2/agent/config"
1614 "github.com/nginx/agent/sdk/v2/client"
1715 "github.com/nginx/agent/sdk/v2/proto"
1816 models "github.com/nginx/agent/sdk/v2/proto/events"
1917 "github.com/nginx/agent/v2/src/core"
2018 "github.com/nginx/agent/v2/src/core/config"
19+ "strings"
2120 "sync"
2221
2322 log "github.com/sirupsen/logrus"
@@ -55,15 +54,18 @@ func (r *MetricsSender) Init(pipeline core.MessagePipeInterface) {
5554
5655func (r * MetricsSender ) Close () {
5756 log .Info ("MetricsSender is wrapping up" )
57+ r .readyToSendMu .Lock ()
5858 r .started .Store (false )
5959 r .readyToSend .Store (false )
60+ defer r .readyToSendMu .Unlock ()
6061}
6162
6263func (r * MetricsSender ) Info () * core.Info {
6364 return core .NewInfo (agent_config .FeatureMetricsSender , "v0.0.1" )
6465}
6566
6667func (r * MetricsSender ) Process (msg * core.Message ) {
68+
6769 if msg .Exact (core .AgentConnected ) {
6870 log .Debugf ("metrics_sender: agent connected %s" , strings .Join (r .conf .Features , "," ))
6971 if r .conf .Features != nil && r .isFeatureEnabled (r .conf .Features ) {
@@ -83,9 +85,9 @@ func (r *MetricsSender) Process(msg *core.Message) {
8385 log .Warnf ("Failed to coerce Message to []Payload: %v" , msg .Data ())
8486 return
8587 }
88+ r .readyToSendMu .RLock ()
8689 defer r .readyToSendMu .RUnlock ()
8790 for _ , p := range payloads {
88- r .readyToSendMu .RLock ()
8991 if ! r .readyToSend .Load () {
9092 log .Debugf ("metrics_sender is not ready to send the metrics" )
9193 continue
0 commit comments