diff --git a/workflow/sync/sync_manager.go b/workflow/sync/sync_manager.go
index <HASH>..<HASH> 100644
--- a/workflow/sync/sync_manager.go
+++ b/workflow/sync/sync_manager.go
@@ -192,7 +192,9 @@ func (cm *Manager) Release(wf *wfv1.Workflow, nodeName string, syncRef *wfv1.Syn
 		syncLockHolder.removeFromQueue(holderKey)
 		log.Debugf("%s sync lock is released by %s", lockName.EncodeName(), holderKey)
 		lockKey := lockName.EncodeName()
-		wf.Status.Synchronization.GetStatus(syncRef.GetType()).LockReleased(holderKey, lockKey)
+		if wf.Status.Synchronization != nil {
+			wf.Status.Synchronization.GetStatus(syncRef.GetType()).LockReleased(holderKey, lockKey)
+		}
 	}
 }
fix: Panic in Workflow Retry (#<I>)