From 3eb0a9b86330985f46bf9cbff8077b0bd7cf0110 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 20 Apr 2023 12:21:07 +0000 Subject: [PATCH] fix(enterprise/replicasync): Avoid deadlock during Close --- enterprise/replicasync/replicasync.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/enterprise/replicasync/replicasync.go b/enterprise/replicasync/replicasync.go index e9df4c3c58f93..6f8c25a65cc49 100644 --- a/enterprise/replicasync/replicasync.go +++ b/enterprise/replicasync/replicasync.go @@ -216,6 +216,12 @@ func (m *Manager) subscribe(ctx context.Context) error { func (m *Manager) syncReplicas(ctx context.Context) error { m.closeMutex.Lock() + select { + case <-m.closed: + m.closeMutex.Unlock() + return xerrors.New("manager is closed") + default: + } m.closeWait.Add(1) m.closeMutex.Unlock() defer m.closeWait.Done()