From f299f97e0ad8ad73f7745d8896f017d939f7b9df Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 8 Apr 2022 10:46:36 +0100 Subject: [PATCH] Fix data race in `TestCorrectStreamWakeup` (#2334) --- syncapi/notifier/notifier_test.go | 4 ++-- syncapi/notifier/userstream.go | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/syncapi/notifier/notifier_test.go b/syncapi/notifier/notifier_test.go index 2273ad764..b06313712 100644 --- a/syncapi/notifier/notifier_test.go +++ b/syncapi/notifier/notifier_test.go @@ -165,9 +165,9 @@ func TestCorrectStreamWakeup(t *testing.T) { go func() { select { - case <-streamone.signalChannel: + case <-streamone.ch(): awoken <- "one" - case <-streamtwo.signalChannel: + case <-streamtwo.ch(): awoken <- "two" } }() diff --git a/syncapi/notifier/userstream.go b/syncapi/notifier/userstream.go index 720185d52..bcd69fad5 100644 --- a/syncapi/notifier/userstream.go +++ b/syncapi/notifier/userstream.go @@ -118,6 +118,12 @@ func (s *UserDeviceStream) TimeOfLastNonEmpty() time.Time { return s.timeOfLastChannel } +func (s *UserDeviceStream) ch() <-chan struct{} { + s.lock.Lock() + defer s.lock.Unlock() + return s.signalChannel +} + // GetSyncPosition returns last sync position which the UserStream was // notified about func (s *UserDeviceStreamListener) GetSyncPosition() types.StreamingToken {