Repository navigation
fix: deflake three tests under parallel -T1C builds - #3608
Merged
xzxiaoshan merged 1 commit intoOct 16, 2026
Merged
Conversation
- weixin: publish the send payload before counting sends; waitFor() could observe the increment while lastSend was still null (NPE under CPU contention) - harness: use a plain user file in the local-filesystem example test; MEMORY.md is agent-managed and memory consolidation rewrites it asynchronously after calls - jev: drop the 10s wall-clock ceiling on the deterministic offline example stream; real hangs stay bounded by surefire's forkedProcessTimeoutInSeconds
jujn
approved these changes
Oct 16, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
xzxiaoshan
added a commit
that referenced
this pull request
Oct 16, 2026
…oken presence (#3610) Follow-up to #3608, covering the remaining failures from the parallel -T1C CI batch. No timeout values were changed — both fixes remove failure mechanisms rather than budgeting more time for them. **JevTraceManagedAgentTest block timeout** (job 115705826734): the default workspace journal is one SQLite file written per event with full sync, connection-per-op, busy timeout 10 s — equal to the test's entire block budget, i.e. zero headroom by construction. Under -T1C on Windows runners, per-commit fsyncs plus AV scans of the fresh -journal files can stall a run past 10 s; this is the same mechanism documented for SubagentPendingToolRecoveryTest in #3602. The test validates JEV middleware wiring on an all-stub pipeline (mocked JevClient, Flux.just model, Mono.just sources) and never reopens state from disk, so an InMemorySessionLogStore removes the IO mechanism outright — the pattern applied to SharedWorkspaceSkillStagingE2ETest in #3519. **Codecov upload failing the build** (job 114655326210): fork PRs cannot see CODECOV_TOKEN, and Codecov rejects tokenless uploads to a protected branch with HTTP 400, which failed the whole job. The step is now skipped when the token is absent, and fail_ci_if_error is off so codecov-side outages never mask the build result.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Three Windows CI failures since the switch to parallel
-T1Cbuilds (jobs on unrelated PRs, i.e. environment flakes, not regressions):WeixinChannelRuntimeTest.deliversWithTheContextTokenStoredForThePeer— NPELocalFilesystemPersonalAssistantExampleTest.localFilesystem_filesPersistAcrossCalls—MEMORY.mdreplaced by the model responsedoneJevContextCompactionTestviaJevContextCompactionExample.runOffline—block(Duration.ofSeconds(10))timeoutFixes (argued from code paths, not local timing)
sendsbefore publishinglastSend, sowaitFor(sends == 1)could observe the increment inside the gap and dereference a null payload. The payload is now published first — the two volatile writes are program-ordered, so any reader that observes the count also observes the payload (JMM); the window is eliminated, not narrowed.MEMORY.mdacross calls, butMEMORY.mdis agent-managed — memory consolidation rewrites it asynchronously after each call (FlushTrigger.always()default), and with a stub model the "merge" output is the literal responsedone. The persistence demo now uses a plain user file (notes.md), which is outside the closed set of harness-managed workspace paths, so no interleaving can clobber it..block()can only fail spuriously when parallel runners starve CPU past any fixed bound. The ceiling is dropped — a real hang is still bounded and surfaced by surefire'sforkedProcessTimeoutInSecondsbackstop. Docs source mirror updated to match.Verification
mvn -T1 -pl agentscope-extensions-channel-weixin,agentscope-harness,agentscope-examples/jev -am test -Dtest=WeixinChannelRuntimeTest,LocalFilesystemPersonalAssistantExampleTest,JevContextCompactionTest— all green (20/20, 3/3, 16/16)spotless:checkclean on the touched modules