Skip to content

fix(cron): use atomic write in save_job_output to prevent data loss on crash - #1173

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-4cde5efa
Mar 13, 2026
Merged

fix(cron): use atomic write in save_job_output to prevent data loss on crash#1173
teknium1 merged 1 commit into
mainfrom
hermes/hermes-4cde5efa

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Cherry-pick of PR #874 by @alireza78a, rebased onto current main with fixes.

save_job_output() used bare open('w') which truncates the output file immediately. A crash or OOM kill between truncation and the completed write would silently wipe the job output.

Write now goes to a temp file first, then os.replace() swaps it atomically — matching the existing save_jobs() pattern in the same file.

Fixes applied on top of #874:

Tests

  • 43 cron tests pass (3 skipped)
  • 8 file permission tests pass

Closes #874

Co-authored-by: alireza78a alireza78a@users.noreply.github.com

…n crash

save_job_output() used bare open('w') which truncates the output file
immediately. A crash or OOM kill between truncation and the completed
write would silently wipe the job output.

Write now goes to a temp file first, then os.replace() swaps it
atomically — matching the existing save_jobs() pattern in the same file.
Preserves _secure_file() permissions and uses safe cleanup on error.

Cherry-picked from PR #874 by alireza78a, rebased onto current main
with conflict resolution and fixes:
- Kept _secure_dir/_secure_file security calls from PR #757
- Used except BaseException (not bare except) to match save_jobs pattern
- Wrapped os.unlink in try/except OSError to avoid masking errors

Co-authored-by: alireza78a <alireza78a@users.noreply.github.com>
@teknium1
teknium1 merged commit 4644f71 into main Mar 13, 2026
1 check failed
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…4cde5efa

fix(cron): use atomic write in save_job_output to prevent data loss on crash
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…4cde5efa

fix(cron): use atomic write in save_job_output to prevent data loss on crash
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…4cde5efa

fix(cron): use atomic write in save_job_output to prevent data loss on crash
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