Skip to content

fix: make _safe_write_json actually atomic with mkstemp + os.replace - #3971

Open
Quratulain-bilal wants to merge 1 commit into
github:mainfrom
Quratulain-bilal:fix/events-safe-write-json-atomic
Open

fix: make _safe_write_json actually atomic with mkstemp + os.replace#3971
Quratulain-bilal wants to merge 1 commit into
github:mainfrom
Quratulain-bilal:fix/events-safe-write-json-atomic

Conversation

@Quratulain-bilal

Copy link
Copy Markdown
Contributor

Problem

Despite its name, _safe_write_json used write_text() which truncates the file before writing. A crash or power loss mid-write leaves a partial JSON file. This function is called by _merge_copilot_json, _merge_opencode_plugin_ref, etc., meaning all Copilot and OpenCode event config writes were non-atomic.

Fix

Now uses empfile.mkstemp + os.replace for atomic writes, matching the pattern used in _utils.py, shared_infra.py, and other safe-write utilities in the codebase.

Despite its name, _safe_write_json used write_text() which truncates the
file before writing. A crash or power loss mid-write leaves a partial
JSON file. Now uses tempfile.mkstemp + os.replace for atomic writes,
matching the pattern used in _utils.py, shared_infra.py, and other
safe-write utilities in the codebase.
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.

1 participant