Fix bug where empty leftover active segment is deleted and batch id is lost#389
Merged
Fix bug where empty leftover active segment is deleted and batch id is lost#389
Conversation
There was a problem hiding this comment.
Pull request overview
Fixes WAL batch-id continuity on startup when an empty leftover active segment exists and there are no closed segments, preventing batch-id reset to 0 after an unclean shutdown (closes #387).
Changes:
- Update
close_leftover_active_segment()to return the next batch id implied by the leftover active segment (Option<u64>). - Use the recovered next id during
SegmentedLog::try_new()initialization when no closed segments exist. - Add a unit test covering the edge case where all closed segments were persisted/deleted and only an empty active segment remains.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
skejserjensen
approved these changes
Mar 30, 2026
chrthomsen
approved these changes
Mar 30, 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.
This PR closes #387 by updating
close_leftover_active_segment()so it returns the next batch id, determined by the leftover active segment. This fixes the bug where deleting empty leftover active segment files could make it so the WAL loses track of the next batch id, if there were no closed segments.A unit test have been added for this specific scenario to ensure that the bug is fixed and the edge case is handled correctly.