Skip to content

Commit 4bf5f75

Browse files
committed
update frame count on commit
1 parent ebdc29a commit 4bf5f75

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

libsql-wal/src/segment/current.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ impl<F> CurrentSegment<F> {
193193
// set frames unordered because there are no guarantees that we received frames
194194
// in order.
195195
header.set_flags(header.flags().union(SegmentFlags::FRAME_UNORDERED));
196+
{
197+
let savepoint = tx.savepoints.first().unwrap();
198+
header.frame_count = (header.frame_count.get() + (tx.next_offset - savepoint.next_offset) as u64).into();
199+
}
196200
header.recompute_checksum();
197201

198202
let (header, ret) = self
@@ -299,6 +303,7 @@ impl<F> CurrentSegment<F> {
299303
}
300304
}
301305

306+
// commit
302307
if let Some(size_after) = size_after {
303308
if tx.not_empty() {
304309
let new_checksum = if let Some(offset) = tx.recompute_checksum {
@@ -326,6 +331,11 @@ impl<F> CurrentSegment<F> {
326331
let mut header = { *self.header.lock() };
327332
header.last_commited_frame_no = last_frame_no.into();
328333
header.size_after = size_after.into();
334+
// count how many frames were appeneded: basically last appeneded offset - initial
335+
// offset
336+
let tx = tx.deref_mut();
337+
let savepoint = tx.savepoints.first().unwrap();
338+
header.frame_count = (header.frame_count.get() + (tx.next_offset - savepoint.next_offset) as u64).into();
329339
header.recompute_checksum();
330340

331341
self.file.write_all_at(header.as_bytes(), 0)?;

0 commit comments

Comments
 (0)