From 2c5243347042e9e35e8997b2c4c4d7ad5108ce25 Mon Sep 17 00:00:00 2001 From: Henrik Johansson Date: Tue, 3 Sep 2019 16:19:34 +0200 Subject: [PATCH] inflight: correct delete functionality --- inflight/inflight.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/inflight/inflight.go b/inflight/inflight.go index 22108258..307bf74f 100644 --- a/inflight/inflight.go +++ b/inflight/inflight.go @@ -62,10 +62,20 @@ type syncU64set struct { } func (s *syncU64set) Delete(v uint64) bool { + s.mu.RLock() + if !s.pks.Has(v) { + s.mu.RUnlock() + return false + } + s.mu.RUnlock() s.mu.Lock() - _, found := s.pks.Pop2() - s.mu.Unlock() - return found + defer s.mu.Unlock() + if !s.pks.Has(v) { + // double check + return false + } + s.pks.Remove(v) + return true } func (s *syncU64set) AddIfNotPresent(v uint64) bool {