From 9933b742bb3bd3129d40eb7df034057ef46a3ecc Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Mon, 19 Jan 2026 19:11:47 +0800 Subject: [PATCH] Remove redundant triggerRefresh calls causing race condition - handleCommitSuccess/Revert/Undo no longer call triggerRefresh - gitStateChange\$ observable already triggers refresh for these operations - Redundant calls caused 2 concurrent loadGitLog, causing CI test failures - Local tests passed because both completed; CI failed because 2nd never completed This ensures only 1 loadGitLog runs per git operation. --- src/windows/GitLog/useGitHistoryLogic.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/windows/GitLog/useGitHistoryLogic.ts b/src/windows/GitLog/useGitHistoryLogic.ts index 17c47b5d..c116a541 100644 --- a/src/windows/GitLog/useGitHistoryLogic.ts +++ b/src/windows/GitLog/useGitHistoryLogic.ts @@ -220,26 +220,26 @@ export function useCommitSelection({ // Don't set shouldSelectFirst - let the maintain selection logic handle it // The uncommitted changes will disappear and it will auto-select the new commit void window.service.native.log('debug', '[test-id-commit-success-handler]', {}); - // Manually trigger refresh as fallback when observable subscription doesn't work - triggerRefresh(); - }, [triggerRefresh]); + // No need to manually trigger refresh - gitStateChange$ observable already handles it + // triggerRefresh(); // Removed: causes race condition with observable-triggered refresh + }, []); const handleRevertSuccess = useCallback(() => { // After revert, select the new revert commit (first non-uncommitted) void window.service.native.log('debug', '[test-id-revert-success-handler]', {}); setLastChangeType('revert'); - // Manually trigger refresh as fallback when observable subscription doesn't work - triggerRefresh(); - }, [setLastChangeType, triggerRefresh]); + // No need to manually trigger refresh - gitStateChange$ observable already handles it + // triggerRefresh(); // Removed: causes race condition with observable-triggered refresh + }, [setLastChangeType]); const handleUndoSuccess = useCallback(() => { // After undo, we want to select uncommitted changes // Set a special flag that will be handled by the effect above // Using lastChangeType 'undo' will trigger the selection logic setLastChangeType('undo'); - // Manually trigger refresh as fallback when observable subscription doesn't work - triggerRefresh(); - }, [setLastChangeType, triggerRefresh]); + // No need to manually trigger refresh - gitStateChange$ observable already handles it + // triggerRefresh(); // Removed: causes race condition with observable-triggered refresh + }, [setLastChangeType]); const handleSearch = useCallback( (parameters: ISearchParameters) => {