Skip to content

commitlog: Handle empty tail segments upon resumption#4863

Open
kim wants to merge 2 commits intomasterfrom
kim/commitlog/resume-empty
Open

commitlog: Handle empty tail segments upon resumption#4863
kim wants to merge 2 commits intomasterfrom
kim/commitlog/resume-empty

Conversation

@kim
Copy link
Copy Markdown
Contributor

@kim kim commented Apr 22, 2026

In #4338, the read-only path was made resilient against empty segments at the end of the log, but corresponding logic was not applied to re-opening the commitlog for writing.

This patch rectifies that by ignoring and removing segments from the tail of the log if they contain equal to or less than segment::Header::LEN bytes.

Additionally, zero-sized segments are eliminated entirely by ensuring that the header is written before moving the segment into place atomically. The benefit of this is not huge, but could simplify commitlog-consuming code by not having to worry about empty (zero-sized) segments. Happy to revert if that is deemed too less of a benefit.

Expected complexity level and risk

2

Testing

Adds a test.

In #4338, the read-only path was made resilient against empty segments
at the end of the log, but corresponding logic was not applied to
re-opening the commitlog for writing.

This patch rectifies that by ignoring and removing segments from the
tail of the log if they contain less than `segment::Header::LEN` bytes.

Additionally, zero-sized segments are eliminated entirely by ensuring
that the header is written before moving the segment into place
atomically. The benefit of this is not huge, but could simplify
commitlog-consuming code by not having to worry about empty (zero-sized)
segments. Happy to revert if that is deemed too less of a benefit.
@kim kim requested a review from Shubham8287 April 22, 2026 10:38
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