diff --git a/collector/receiver/telemetryapireceiver/receiver.go b/collector/receiver/telemetryapireceiver/receiver.go index 25670f81fd..2fc479060b 100644 --- a/collector/receiver/telemetryapireceiver/receiver.go +++ b/collector/receiver/telemetryapireceiver/receiver.go @@ -26,6 +26,7 @@ import ( "os" "strconv" "strings" + "sync" "time" "github.com/golang-collections/go-datastructures/queue" @@ -62,6 +63,7 @@ type telemetryAPIReceiver struct { httpServer *http.Server logger *zap.Logger queue *queue.Queue // queue is a synchronous queue and is used to put the received log events to be dispatched later + mu sync.Mutex nextTraces consumer.Traces nextLogs consumer.Logs lastPlatformStartTime string @@ -138,6 +140,9 @@ func (r *telemetryAPIReceiver) httpHandler(w http.ResponseWriter, req *http.Requ return } + r.mu.Lock() + defer r.mu.Unlock() + for _, el := range slice { r.logger.Debug(fmt.Sprintf("Event: %s", el.Type), zap.Any("event", el)) switch el.Type {