File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ) ?;
You can’t perform that action at this time.
0 commit comments