Skip to content

fix(fleet): bound per-tick heartbeat and memory sampling load - #6443

Merged
Hmbown merged 3 commits into
mainfrom
fix/fleet-tick-load
Sep 24, 2026
Merged

Hmbown merged 3 commits into
mainfrom
fix/fleet-tick-load

Conversation

@Hmbown

@Hmbown Hmbown commented Sep 23, 2026

Copy link
Copy Markdown
Owner

Refs #6424

Four Fleet manager lifecycle tests failed on macOS CI under full-suite
load ("first Fleet attempt never started", "fake worker never
started", managers never converging) and passed alone from the same CI
binary in under 1.2 s. In the concurrent-managers failure the standby
executor held the worker, yet the child's first shell builtin never ran
within 15 s. Timeouts were already raised from 5 s to 15 s without
effect, so this does not raise them again.

Product side: every scheduler tick appended a durable heartbeat per
leased task (sync_data, which is F_FULLFSYNC on macOS) and spawned ps
to sample worker memory. At the tests' 10 ms tick that is ~100
full-drive flushes and ~100 process spawns a second per test, against a
300 s stale window. Heartbeats are now skipped when the worker already
has one stamped this second (timestamps are whole-second), and memory
is sampled at most once a second per worker, keeping the last value.

Test side: the fleet::manager module runs in a max-threads = 1 nextest
group, the same remedy as the exec-persistent-service tests (#5355).

Not established: that this is the whole cause. Late spawn vs. late
child start was not distinguished; acceptance is a green loaded hosted
macOS run.

Evidence: 431 passed, 0 failed (12,828 skipped) on the fleet:: selection;
nextest show-config test-groups lists the manager tests in the new
group. TUI all-target/all-feature Clippy with CI flags and fmt passed.

🤖 Generated with Claude Code

Four Fleet manager lifecycle tests failed on macOS CI under full-suite
load ("first Fleet attempt never started", "fake worker never
started", managers never converging) and passed alone from the same CI
binary in under 1.2 s. In the concurrent-managers failure the standby
executor held the worker, yet the child's first shell builtin never ran
within 15 s. Timeouts were already raised from 5 s to 15 s without
effect, so this does not raise them again.

Product side: every scheduler tick appended a durable heartbeat per
leased task (sync_data, which is F_FULLFSYNC on macOS) and spawned `ps`
to sample worker memory. At the tests' 10 ms tick that is ~100
full-drive flushes and ~100 process spawns a second per test, against a
300 s stale window. Heartbeats are now skipped when the worker already
has one stamped this second (timestamps are whole-second), and memory
is sampled at most once a second per worker, keeping the last value.

Test side: the fleet::manager module runs in a max-threads = 1 nextest
group, the same remedy as the exec-persistent-service tests (#5355).

Not established: that this is the whole cause. Late spawn vs. late
child start was not distinguished; acceptance is a green loaded hosted
macOS run.

Evidence: 431 passed, 0 failed (12,828 skipped) on the fleet:: selection;
`nextest show-config test-groups` lists the manager tests in the new
group. TUI all-target/all-feature Clippy with CI flags and fmt passed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 23, 2026 16:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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.

Hmbown pushed a commit to gaord/CodeWhale that referenced this pull request Sep 24, 2026
Version drift failed on Hmbown#6431, Hmbown#6443 and Hmbown#6456 with
`rm: cannot remove '/tmp/tmp.*/checkout': Directory not empty` right after
"require-release-tag-checkout tests passed": every assertion held, and only
the EXIT trap failed. The fixture commits and pushes, which can spawn a
detached `git maintenance run --auto` still writing into .git while the
trap deletes it. Disable auto maintenance/gc for every git process in the
fixture via GIT_CONFIG_COUNT, and retry the removal once.

Verification: the fixture passes locally; shellcheck clean. The race was
never reproduced locally, so the root cause is inferred from the log; CI
reruns are the proof.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Hmbown
Hmbown merged commit 811bb69 into main Sep 24, 2026
32 checks passed
@Hmbown
Hmbown deleted the fix/fleet-tick-load branch September 24, 2026 09:02
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