From 69ab35442ce8ccc135d00bdf6d83381dd6e8538a Mon Sep 17 00:00:00 2001 From: "jiangqi.rrt" Date: Thu, 4 Dec 2025 11:17:48 +0800 Subject: [PATCH] fix baggage and tag concurrent problem --- CHANGLOG.md | 4 ++++ internal/trace/span.go | 25 ++++++++++++++++++++++++- internal/version.go | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGLOG.md b/CHANGLOG.md index 1e43543..c4a6dc5 100644 --- a/CHANGLOG.md +++ b/CHANGLOG.md @@ -1,3 +1,7 @@ +## [0.1.17] - 2025-12-04 +### Fixed +- fix baggage and tag concurrent problem + ## [0.1.16] - 2025-11-10 ### Fixed - fix baggage escape problem diff --git a/internal/trace/span.go b/internal/trace/span.go index e1e7099..3a0afff 100644 --- a/internal/trace/span.go +++ b/internal/trace/span.go @@ -83,6 +83,20 @@ type TagTruncateConf struct { InputOutputFieldMaxByte int } +func (s *Span) GetBaggage() map[string]string { + var bg map[string]string + s.lock.RLock() + rawBag := s.SpanContext.GetBaggage() + if rawBag != nil { + bg = make(map[string]string) + for k, v := range rawBag { + bg[k] = v + } + } + s.lock.RUnlock() + return bg +} + func (s *Span) setCutOffTag(cutOffKeys []string) { if cutOffTags, ok := s.SystemTagMap[consts.CutOff]; ok { if value, ok := cutOffTags.([]string); ok { @@ -117,7 +131,16 @@ func (s *Span) GetTagMap() map[string]interface{} { return nil } - return s.TagMap + var tagMap map[string]interface{} + s.lock.RLock() + if s.TagMap != nil { + tagMap = make(map[string]interface{}) + for k, v := range s.TagMap { + tagMap[k] = v + } + } + s.lock.RUnlock() + return tagMap } func (s *Span) GetDuration() int64 { diff --git a/internal/version.go b/internal/version.go index 8e0c3ac..1018226 100644 --- a/internal/version.go +++ b/internal/version.go @@ -5,5 +5,5 @@ package internal // Version returns the version of the loop package. func Version() string { - return "v0.1.16" + return "v0.1.17" }