From 8d27978760e1986bafb7a48e12e0a7fc5517f843 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 20 Apr 2023 15:37:30 +0300 Subject: [PATCH] fix(enterprise/replicasync): Avoid deadlock during Close (#7220) --- enterprise/replicasync/replicasync.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/enterprise/replicasync/replicasync.go b/enterprise/replicasync/replicasync.go index e9df4c3c58..6f8c25a65c 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()