Repository navigation
Publish migrated recordings without overwriting competing files - #699
Merged
Merged
Conversation
Give copy attempts fresh temporary names, hold verified file identity through no-replace publication and metadata commit, and retain uncertain artifacts instead of unlinking replacements. Abandoned-job cleanup no longer treats matching bytes or a predictable path as ownership evidence. Add 28 real-filesystem/private-SQLite regression cases for copy/move, collisions, cancellation, substitution and unsupported publication. Use the existing CMake and integration/sanitizer registrations. The fixture fails 24/28 on origin/main 8927bc8 and passes 28/28 with this isolated fix under Debug ASan/UBSan. No services or legacy shared-path tests were run. Uncertain artifacts remain cleanup debt rather than being deleted.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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.
Depends on #701; merge the shared CI cleanup first. This branch includes that exact shared commit so its workflow changes disappear from this PR after #701 merges. Suite membership is declared beside the tests in CMake; this fix has no independent workflow edits. All three remaining fix branches merge cleanly with each other.
A filesystem migration could overwrite a destination created during the copy, publish a substituted temporary file, or remove an unowned artifact during cancellation or cleanup.
Keep the verified temporary file open through no-replace publication and the final metadata check. Use fresh temporary names when an existing artifact is encountered, and retain uncertain artifacts instead of treating a predictable path or matching bytes as ownership proof.
main: 24 of 28 cases fail before the fix; all 28 pass under ASan/UBSan. Private filesystem/SQLite fixtures cover copy/move, collisions, cancellation, substitution and unsupported publication.ctest --test-dir build/focused-debug --output-on-failure -R '^test_storage_migration_publication$'.Unsupported atomic no-replace publication fails without overwriting. Retained artifacts can require manual cleanup. The final identity check is not an atomic filesystem/SQLite transaction and cannot exclude existing open writers. S3 transfers and source removal are outside this change.
Extracted independently from #693; no foundation framework or policy exceptions. Hosted CI is required before merge.
Revalidated after updating from main and adopting the shared CI suites: focused ASan/UBSan regressions pass, and CTest labels select the existing suite plus only this PR’s regressions.