feat: persist events across commit boundaries

This commit is contained in:
2026-08-31 09:35:20 +00:00
parent 43dcd56313
commit 583b539f86
7 changed files with 722 additions and 14 deletions
+8 -2
View File
@@ -292,12 +292,18 @@ func (segment *Segment) Close() error {
}
type SegmentRecovery struct {
Records []SegmentRecord
Records []RecoveredSegmentRecord
CommittedOffset uint64
OriginalSize uint64
TruncatedTail uint64
}
type RecoveredSegmentRecord struct {
Offset uint64
Length uint64
Record SegmentRecord
}
func RecoverSegment(directory, name string, committedOffset uint64, limits SegmentLimits) (SegmentRecovery, error) {
var result SegmentRecovery
if filepath.Base(name) != name {
@@ -338,7 +344,7 @@ func RecoverSegment(directory, name string, committedOffset uint64, limits Segme
return result, ErrCommittedRangeMissing
}
consumed += length
result.Records = append(result.Records, record)
result.Records = append(result.Records, RecoveredSegmentRecord{Offset: consumed - length, Length: length, Record: record})
}
if consumed != committedOffset {
return result, ErrCommittedRangeMissing