Repository navigation
fix(rocksdb): make snapshot restore retryable - #3293
Merged
Merged
Conversation
- Keep the newest run for each workflow and PR - Verify source freshness before automatic retries - Test retry decisions and document the CI policy
- hold physical database leases through close and reopen - bind pending metadata to its checkpoint and WAL - validate complete records before repairing aliases - reclaim only unused operation-owned checkpoint copies - cover interrupted retry and physical ownership boundaries
- check pending state before creating another checkpoint - hold recovery ownership through copy creation and cleanup - preserve existing pending sources without directory growth - verify repeated failures and multi-database cleanup
- follow the requested Markdown paragraph style - retain the validated recovery and compatibility guidance - keep code snippets and path references intact
- incorporate the current Java 17 baseline - retain the scoped PR changes - preserve branch history without rewriting commits
- preserve WAL tails across physical directory aliases - reject unsafe links before destructive recovery - fail closed when marker existence is unknown - release failed stores for retry and strengthen tests
- write and force owned metadata staging before publication - publish pending markers without replacing existing records - preserve live data and retry after partial write failures - document same-directory hard-link requirements
- compare aliased ancestors and relative suffixes - recheck identity before install and owned cleanup - preserve live data on unsafe checkpoint layouts - gate permission faults by observed access checks
- preserve merged Topling provider and resource handling - retain retryable snapshot recovery and shared ownership - adapt regression tests to current exception packages
- sync Linux marker entries before replacing live data - retain checkpoints when directory sync fails - verify ordering and describe durability limits
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3293 +/- ##
============================================
- Coverage 41.87% 41.40% -0.48%
+ Complexity 6969 6926 -43
============================================
Files 768 762 -6
Lines 66436 66773 +337
Branches 8831 8939 +108
============================================
- Hits 27823 27646 -177
- Misses 35468 35968 +500
- Partials 3145 3159 +14 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This was referenced Oct 9, 2026
MrJs133
approved these changes
Oct 9, 2026
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.
A failed RocksDB snapshot restore can leave live sessions referring to a closed database or lose the checkpoint needed for retry. This change keeps a shared database owner and preserves the checkpoint until restore and reopening both succeed.
Based on current Apache master, preserving the merged ToplingDB provider checks and native resource management. This improves the shared RocksDB-compatible recovery path; it does not add a ToplingDB feature or promise recovery from arbitrary data corruption.
Validation: Java 17 compilation and focused RocksDB session, snapshot restore and directory-sync failure regressions pass. Optional kernel double-bind fixture cases were not run in this environment. The documented recovery scope covers I/O failures and process interruption; complete power-loss durability of copied data/WAL files is outside this change. See
docs/rocksdb-recovery.mdfor recovery and retry behavior.Doc - Done.