bug(status): status --json ignores the documented ~2s fetch bound on cold calls, blocking 25-120s+ #470
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#470
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
madtea status --json's documented ~2s fetch bound does not hold on the first status calls of a session. Those calls block for 25s to 120s+ and return nothing, instead of returning within ~2s or falling back to cached refs. Once the session is warm, every call is fast.Documented contract
The tool description and
status --helppromise: each call wraps a realgit fetch(origin) bounded by a short ~2s timeout; on timeout or failure it falls back to the last-fetched refs withremoteStale/remoteWarning; status "never blocks on, or fails because of, the network."What I saw
I swept
madtea status --jsonacross about 120 local clones to get fresh ahead/behind counts.remoteStale/remoteWarningfallback fired, just a block until I killed it.So the contract holds warm and breaks cold. The ~2s bound and the stale fallback are not applied on the first-call path.
Read (hypothesis)
The cold cost looks like a one-time network or credential warmup that sits outside the ~2s fetch timeout, for example the first git-fetch credential resolution, or a forge connect/init step. On the cold path the call blocks on the OS default connect timeout (~120s) rather than the documented ~2s. The ~120s figure and the "unexpected network or fetch step / lock wait" candidates match #469 (
madt_worktrees addblocks ~120s), so these are probably the same unbounded cold-network path in two commands.Repro
madtea status --jsonin a repo and time it.remoteStale/remoteWarningfallback fires on the cold call.Acceptance
madtea statuscall of a session returns within the documented bound, or falls back to cached refs withremoteStale/remoteWarning. It never blocks past ~2s on the network.