Skip to content

compile: retry the artifact rename through a transient Windows hold - #900

Closed
colinhacks wants to merge 1 commit into
mainfrom
compile-rename-retry
Closed

compile: retry the artifact rename through a transient Windows hold#900
colinhacks wants to merge 1 commit into
mainfrom
compile-rename-retry

Conversation

@colinhacks

Copy link
Copy Markdown
Contributor

The compile harness on the win32 CI legs intermittently fails the publish step with atomically replacing ./bin-<name>.exe with staged output … The process cannot access the file because it is being used by another process. (os error 32). It hit #718's win32-x64 run and #583's win32-arm64 run within a few hours of each other today. An antivirus scan or the search indexer holds the freshly written executable for a moment after its last handle closes; nothing of ours still has it open.

The publish step now retries a rename that reports ERROR_SHARING_VIOLATION or ERROR_LOCK_VIOLATION with a short backoff (25 ms doubling to 400 ms, about 1.6 s in total) and adds the attempt count to the error when the hold outlasts it. A non-transient failure is still reported at once. graceful-fs retries a win32 rename on the same class of error for the same reason.

Tests: the retry path (two violations, then the rename lands), the exhausted path (the destination is untouched and the error names the attempt count), and the existing non-transient test now asserts a single attempt.

Gates: CI's clippy invocation and cargo test -p nub-cli --features compile --bin nub atomic_publish on a builder.

The compile harness on the win32 CI legs intermittently fails
`atomically replacing ./bin-<name>.exe with staged output` with
ERROR_SHARING_VIOLATION (os error 32): an antivirus scan or the search
indexer holds the freshly written executable for a moment after its last
handle closes, and nothing of ours still has it open. The publish step
now retries a rename that reports a sharing or lock violation with a
short backoff, about 1.6s in total, and reports the attempt count when
the hold outlasts it. A non-transient failure is still reported at once.

graceful-fs retries a win32 rename on the same class of error for the
same reason.
Copilot AI lite review requested due to automatic review settings September 6, 2026 00:35
@pullfrog

pullfrog Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Pullfrog stalled — likely cause: provider usage limit reached

The agent stopped emitting events for 125s and was killed by the activity-timeout watchdog. 101 events were processed before the failure.

Recent agent stderr
timestamp=2026-09-06T00:36:44.739Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:36:47.562Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:36:52.023Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:37:00.543Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:37:16.918Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:37:49.402Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T00:38:54.030Z level=ERROR run=2a9b2a23 message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f8bdaa29dffe9u53ikZwvgxXxx small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"

Pullfrog  | Rerun failed job ➔View workflow run | via Pullfrog | Using GPT Sol𝕏

@vercel

vercel Bot commented Sep 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
nub Ready Ready Preview Sep 6, 2026 12:36am UTC

Request Review

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@colinhacks

Copy link
Copy Markdown
Contributor Author

Superseded by #898, which retries the same publish rename with the self-probe root cause and a Windows-gated predicate.

@colinhacks colinhacks closed this Sep 6, 2026
@colinhacks
colinhacks deleted the compile-rename-retry branch September 6, 2026 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants