From 00944d01adc51ea410f948f3bd7cc4d82b59eb1e Mon Sep 17 00:00:00 2001 From: Timo Behrendt Date: Mon, 19 May 2025 21:19:24 +0200 Subject: [PATCH] add Get method to traceIdTtlMap --- internals/traceIdTtlMap/traceIdTtlMap.go | 35 ++++++++++++++---------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/internals/traceIdTtlMap/traceIdTtlMap.go b/internals/traceIdTtlMap/traceIdTtlMap.go index 565b9d4..cdc817b 100644 --- a/internals/traceIdTtlMap/traceIdTtlMap.go +++ b/internals/traceIdTtlMap/traceIdTtlMap.go @@ -90,19 +90,7 @@ func (m *TTLMap) Add(key string) { * Removes the trace id from the map if it has expired. */ func (m *TTLMap) Exists(key string) bool { - m.mu.RLock() - value, ok := m.m[key] - m.mu.RUnlock() - - if ok { - if value < time.Now().Unix() { - m.mu.Lock() - delete(m.m, key) - m.mu.Unlock() - return false - } - } - + _, ok := m.Get(key) return ok } @@ -116,6 +104,26 @@ func (m *TTLMap) insertEntry(key string, value int64) { m.mu.Unlock() } +/** + * Gets an entry from the map. + */ +func (m *TTLMap) Get(key string) (int64, bool) { + m.mu.RLock() + value, ok := m.m[key] + m.mu.RUnlock() + + if ok { + if value < time.Now().Unix() { + m.mu.Lock() + delete(m.m, key) + m.mu.Unlock() + return 0, false + } + } + + return value, ok +} + /** * Gets an entry from the map. * Only used for testing. @@ -124,7 +132,6 @@ func (m *TTLMap) getEntry(key string) (int64, bool) { m.mu.RLock() value, ok := m.m[key] m.mu.RUnlock() - return value, ok }