From 82fd3e865e71b86359767e2e7da93bc60b5eaa28 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 30 Mar 2023 17:10:32 -0700 Subject: [PATCH] Fix deadlock caused by subscription manager test (#1563) We held the lock if subscription length check fails --- pkg/rtc/subscriptionmanager_test.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/rtc/subscriptionmanager_test.go b/pkg/rtc/subscriptionmanager_test.go index aa4441c1e..0132abb80 100644 --- a/pkg/rtc/subscriptionmanager_test.go +++ b/pkg/rtc/subscriptionmanager_test.go @@ -225,14 +225,20 @@ func TestUnsubscribe(t *testing.T) { require.False(t, s.isDesired()) require.Eventually(t, func() bool { - return !s.needsUnsubscribe() + if s.needsUnsubscribe() { + return false + } + sm.lock.RLock() + subLen := len(sm.subscriptions) + sm.lock.RUnlock() + if subLen != 0 { + return false + } + return true }, subSettleTimeout, subCheckInterval, "Track was not unsubscribed") // no traces should be left require.Len(t, sm.GetSubscribedTracks(), 0) - sm.lock.RLock() - require.Len(t, sm.subscriptions, 0) - sm.lock.RUnlock() require.False(t, res.TrackChangedNotifier.HasObservers()) tm := sm.params.Telemetry.(*telemetryfakes.FakeTelemetryService)