Thanks to visit codestin.com
Credit goes to github.com

Skip to content

fix(tachometer): publish completed Parquet parts atomically - #427

Open
nv-yna wants to merge 2 commits into
NVIDIA:mainfrom
nv-yna:yna/tachometer-atomic-parquet
Open

fix(tachometer): publish completed Parquet parts atomically#427
nv-yna wants to merge 2 commits into
NVIDIA:mainfrom
nv-yna:yna/tachometer-atomic-parquet

Conversation

@nv-yna

@nv-yna nv-yna commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

Periodic compaction can discover an out-N.parquet file before its writer closes the Parquet footer. It then classifies the open file as invalid and deletes it; the writer can still finish through its open file descriptor, report success, and clear the buffered rows.

Write each raw part to a unique temporary file in the same directory and publish its final name only after the Parquet writer closes successfully. Temporary output is removed on write, close, or rename errors. Reuse the already-locked tempfile dependency by moving it from dev dependencies. Existing schemas and published-file compaction policy are unchanged.

Validation:

  • Deterministic regression runs the real periodic compactor while a Parquet writer has flushed row data but has not closed its footer. Reintroducing the original final-name publication fails at compactor deleted the unfinished write; the fix preserves every row exactly once across successive compactions.
  • All 3 new unit tests and 13 existing writer integration tests passed. Final test executables were linked with debug sections stripped after a normal link exhausted local disk; dependency artifacts were reused.
  • rustfmt --check and git diff --check passed. Required all-file pre-commit exposed 39 remaining pre-existing Python findings and reformatted 10 unrelated files; those edits were preserved in the validation record and reverted. Scoped hooks have no applicable files. Formatting is a separate signed commit.

Related: #428 fixes the independent Slurm SIGTERM delivery issue during Tachometer shutdown.

All seven CI checks passed at commit2efcb70c9259bc863c24d6302180367ffbb48d78, including the Tachometer tests and scraper binary build.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@4d3e8bd). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #427   +/-   ##
=======================================
  Coverage        ?   75.25%           
=======================================
  Files           ?      109           
  Lines           ?    16115           
  Branches        ?        0           
=======================================
  Hits            ?    12127           
  Misses          ?     3988           
  Partials        ?        0           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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