Skip to content

Commit 755c701

Browse files
authored
Merge pull request #1694 from tursodatabase/bottomless-s3-pagination-fix
fix bug for case when S3 has more than 1 page of data
2 parents fcc479b + e5448f8 commit 755c701

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

bottomless/src/replicator.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,6 +1540,7 @@ impl Replicator {
15401540
};
15411541
let mut next_marker = None;
15421542
let mut applied_wal_frame = false;
1543+
let mut last_injected_frame_no = 0;
15431544
'restore_wal: loop {
15441545
let mut list_request = self.list_objects().prefix(&prefix);
15451546
if let Some(marker) = next_marker {
@@ -1554,7 +1555,6 @@ impl Replicator {
15541555
break;
15551556
}
15561557

1557-
let mut last_received_frame_no = 0;
15581558
for obj in objs {
15591559
let key = obj
15601560
.key()
@@ -1577,9 +1577,9 @@ impl Replicator {
15771577
continue;
15781578
}
15791579
};
1580-
if first_frame_no != last_received_frame_no + 1 {
1580+
if first_frame_no != last_injected_frame_no + 1 {
15811581
tracing::warn!("Missing series of consecutive frames. Last applied frame: {}, next found: {}. Stopping the restoration process",
1582-
last_received_frame_no, first_frame_no);
1582+
last_injected_frame_no, first_frame_no);
15831583
break;
15841584
}
15851585
if let Some(frame) = last_consistent_frame {
@@ -1612,7 +1612,7 @@ impl Replicator {
16121612
);
16131613

16141614
while let Some(frame) = reader.next_frame_header().await? {
1615-
last_received_frame_no = reader.next_frame_no();
1615+
last_injected_frame_no = reader.next_frame_no();
16161616
reader.next_page(&mut page_buf).await?;
16171617
if self.verify_crc {
16181618
checksum = frame.verify(checksum, &page_buf)?;
@@ -1621,7 +1621,7 @@ impl Replicator {
16211621
let checksum = (crc1 as u64) << 32 | crc2 as u64;
16221622
let frame_to_inject = libsql_replication::frame::Frame::from_parts(
16231623
&libsql_replication::frame::FrameHeader {
1624-
frame_no: (last_received_frame_no as u64).into(),
1624+
frame_no: (last_injected_frame_no as u64).into(),
16251625
checksum: checksum.into(),
16261626
page_no: frame.pgno().into(),
16271627
size_after: frame.size_after().into(),

0 commit comments

Comments
 (0)