From 7a3ca0224c0385054ececc8e2c0324ce65cb3760 Mon Sep 17 00:00:00 2001 From: SimFG Date: Thu, 28 Nov 2024 14:30:55 +0800 Subject: [PATCH] fix to replicate entity lost when pause the task Signed-off-by: SimFG --- server/cdc_impl.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/cdc_impl.go b/server/cdc_impl.go index 9910b5b..596ba9d 100644 --- a/server/cdc_impl.go +++ b/server/cdc_impl.go @@ -1228,9 +1228,13 @@ func (e *MetaCDC) pauseTaskWithReason(taskID, reason string, currentStates []met if replicateEntity, ok := e.replicateEntityMap.data[uKey]; ok { if quitFunc, ok := replicateEntity.taskQuitFuncs.GetAndRemove(taskID); ok { quitFunc() + replicateEntity.refCnt.Dec() + } + if replicateEntity.refCnt.Load() == 0 { + replicateEntity.entityQuitFunc() + delete(e.replicateEntityMap.data, uKey) } } - delete(e.replicateEntityMap.data, uKey) e.replicateEntityMap.Unlock() return err } @@ -1284,9 +1288,9 @@ func (e *MetaCDC) delete(taskID string) error { } if replicateEntity.refCnt.Load() == 0 { replicateEntity.entityQuitFunc() + delete(e.replicateEntityMap.data, uKey) } } - delete(e.replicateEntityMap.data, uKey) e.replicateEntityMap.Unlock() return err