Skip to content

fix(server): stop background status fetches after repeated timeouts - #62

Closed
macodev00 wants to merge 1 commit into
mainfrom
cursor/stop-status-fetch-timeout-redo2-4e03
Closed

macodev00 wants to merge 1 commit into
mainfrom
cursor/stop-status-fetch-timeout-redo2-4e03

Conversation

@macodev00

Copy link
Copy Markdown
Owner

What Changed

Background Git status refresh stops polling a remote after three consecutive fetch timeouts. A successful explicit pull, a completed push, or an explicit fetch (fetchRemote, fetchRemoteBranch, fetchRemoteTrackingBranch) clears that stop and lets the background poll run again. Fast non-timeout failures still use the existing backoff and do not stop the remote.

Refresh bookkeeping is one bounded ledger. Idle entries, including generations remembered after a successful explicit fetch, pull, or push, are evicted at 2,048. An in-flight fetch keeps the generation it captured, so a timeout that finishes after recovery cannot write a new failure streak. A missing record does not match a stale attempt.

The change stays in the Git driver. There is no contract field, client state, or web/mobile recovery UI. Recovery is the existing pull, push, and fetch commands.

Why

Status refresh runs git fetch with a 5 second timeout and prompts disabled. credential.helper=osxkeychain can still raise a macOS Keychain dialog, the timeout kills git before Always Allow is stored, and the failure used to retry forever (30 seconds, doubling, capped at 15 minutes). Clearing credential.helper would also drop silent keychain and gh auth git-credential success, so the helper stays intact and only repeated timeouts stop the background spawn. An explicit pull still uses the normal interactive timeout, so the dialog can be approved.

UI Changes

No UI changes.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • No UI changes, so this PR has no screenshots or video

Fixes pingdotgg#13912

Grok 4.7, Cursor cloud agent.

Open in Web Open in Cursor 

Background status fetch kills git after five seconds, so a macOS keychain
prompt from git-credential-osxkeychain never receives Always Allow and the
refresh retries forever. After three consecutive timeouts, stop polling
that remote. A successful explicit pull, completed push, or fetch clears
the stop.

Idle refresh-generation entries share the same 2,048-entry bound as failure
state. An in-flight fetch keeps the generation it captured, and a missing
record cannot match a stale attempt.

Fixes pingdotgg#13912
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Sep 28, 2026
@macodev00

Copy link
Copy Markdown
Owner Author

Opened upstream.

@macodev00 macodev00 closed this Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Background status fetch triggers a macOS Keychain password prompt through git-credential-osxkeychain and retries it every 15 minutes

1 participant