From a7b7860e0e1d736a4604f1eb37f213fa4a7f9f73 Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Fri, 31 Mar 2023 11:59:45 +0800 Subject: [PATCH] fix: potential data conflicts save site-resync metadata (#16926) --- cmd/site-replication-utils.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd/site-replication-utils.go b/cmd/site-replication-utils.go index 192389f0d..8ea2d8291 100644 --- a/cmd/site-replication-utils.go +++ b/cmd/site-replication-utils.go @@ -170,6 +170,7 @@ func (sm *siteResyncMetrics) save(ctx context.Context) { case <-sTimer.C: if globalSiteReplicationSys.isEnabled() { sm.Lock() + wg := sync.WaitGroup{} for dID, rs := range sm.peerResyncMap { st, ok := sm.resyncStatus[rs.resyncID] if ok { @@ -179,9 +180,14 @@ func (sm *siteResyncMetrics) save(ctx context.Context) { } rs.LastSaved = UTCNow() sm.peerResyncMap[dID] = rs - go saveSiteResyncMetadata(ctx, st, newObjectLayerFn()) + wg.Add(1) + go func() { + defer wg.Done() + saveSiteResyncMetadata(ctx, st, newObjectLayerFn()) + }() } } + wg.Wait() sm.Unlock() } sTimer.Reset(siteResyncSaveInterval)