feat: persist events across commit boundaries
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user