Fix Atomic output publishing truncated reports when serialization fails mid-stream#26
Open
jzho987 wants to merge 1 commit into
Open
Fix Atomic output publishing truncated reports when serialization fails mid-stream#26jzho987 wants to merge 1 commit into
jzho987 wants to merge 1 commit into
Conversation
…ls mid-stream Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Coverage Report for CI Build 28994926882Coverage increased (+1.4%) to 62.04%Details
Uncovered ChangesNo uncovered changes found. Coverage Regressions246 previously-covered lines in 9 files lost coverage.
Coverage Stats
💛 - Coveralls |
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.
Station report JSONs sometimes arrive truncated (typically the large base64-inlined WAV reports) and get quarantined as corrupt by the shipper. Root cause:
Atomicpublishes its temp file in afinally, so any mid-stream failure (lazy attachment read, ENOSPC) still moves partial output into the reports directory under a valid report name — and the test still reports PASS. The temp file also lived in /tmp (cross-filesystem move = non-atomic copy, racing the shipper's 5s poll) and was never fsynced (power yank can leave an empty file after the rename).close()keeps its name and semantics, so hardware-test-framework'sAtomicWithPermissionssubclass is unaffected. Regression tests included; full suite passes (511 passed, 2 xfailed).🤖 Generated with Claude Code