Synchronize Sentry debug message handling.

This commit is contained in:
Maximilian Paß
2023-04-11 17:17:54 +01:00
parent 2aa10a130f
commit 801e4f489e

View File

@ -7,7 +7,6 @@ import (
"io" "io"
"regexp" "regexp"
"strconv" "strconv"
"sync"
"time" "time"
) )
@ -28,10 +27,9 @@ var (
// For matches, it creates a Sentry Span. Otherwise, the data will be forwarded to the Target. // For matches, it creates a Sentry Span. Otherwise, the data will be forwarded to the Target.
// The passed context Ctx should contain the Sentry data. // The passed context Ctx should contain the Sentry data.
type SentryDebugWriter struct { type SentryDebugWriter struct {
Target io.Writer Target io.Writer
Ctx context.Context Ctx context.Context
lastSpan *sentry.Span lastSpan *sentry.Span
lastSpanLock sync.Mutex
} }
func NewSentryDebugWriter(target io.Writer, ctx context.Context) *SentryDebugWriter { func NewSentryDebugWriter(target io.Writer, ctx context.Context) *SentryDebugWriter {
@ -66,7 +64,7 @@ func (s *SentryDebugWriter) Write(p []byte) (n int, err error) {
n += count n += count
} }
go s.handleTimeDebugMessage(match) s.handleTimeDebugMessage(match)
n += len(p) - len(match["before"]) - len(match["after"]) n += len(p) - len(match["before"]) - len(match["after"])
if len(match["after"]) > 0 { if len(match["after"]) > 0 {
@ -80,8 +78,6 @@ func (s *SentryDebugWriter) Write(p []byte) (n int, err error) {
func (s *SentryDebugWriter) Close(exitCode int) { func (s *SentryDebugWriter) Close(exitCode int) {
if s.lastSpan != nil { if s.lastSpan != nil {
s.lastSpanLock.Lock()
defer s.lastSpanLock.Unlock()
s.lastSpan.Op = "nomad.execute.disconnect" s.lastSpan.Op = "nomad.execute.disconnect"
s.lastSpan.SetTag("exit_code", strconv.Itoa(exitCode)) s.lastSpan.SetTag("exit_code", strconv.Itoa(exitCode))
s.lastSpan.Finish() s.lastSpan.Finish()
@ -97,8 +93,6 @@ func (s *SentryDebugWriter) handleTimeDebugMessage(match map[string][]byte) {
return return
} }
s.lastSpanLock.Lock()
defer s.lastSpanLock.Unlock()
if s.lastSpan != nil { if s.lastSpan != nil {
s.lastSpan.EndTime = time.UnixMilli(timestamp) s.lastSpan.EndTime = time.UnixMilli(timestamp)
s.lastSpan.SetData("latency", time.Since(time.UnixMilli(timestamp)).String()) s.lastSpan.SetData("latency", time.Since(time.UnixMilli(timestamp)).String())