Skip to content

Commit f83de5d

Browse files
committed
[archival] swtich state sync from archival store to checkpoints bucket
1 parent e7bf9b6 commit f83de5d

File tree

25 files changed

+182
-1278
lines changed

25 files changed

+182
-1278
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/sui-archival/src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
#![allow(dead_code)]
44

55
pub mod reader;
6-
pub mod writer;
7-
8-
#[cfg(test)]
9-
mod tests;
106

117
use crate::reader::{ArchiveReader, ArchiveReaderMetrics};
128
use anyhow::{anyhow, Result};
@@ -379,7 +375,7 @@ pub async fn read_manifest_as_json(remote_store_config: ObjectStoreConfig) -> Re
379375
let config = ArchiveReaderConfig {
380376
remote_store_config,
381377
download_concurrency: NonZeroUsize::new(1).unwrap(),
382-
use_for_pruning_watermark: false,
378+
ingestion_url: None,
383379
};
384380
let archive_reader = ArchiveReader::new(config, &metrics)?;
385381
archive_reader.sync_manifest_once().await?;
@@ -454,7 +450,7 @@ pub async fn verify_archive_with_checksums(
454450
let config = ArchiveReaderConfig {
455451
remote_store_config,
456452
download_concurrency: NonZeroUsize::new(concurrency).unwrap(),
457-
use_for_pruning_watermark: false,
453+
ingestion_url: None,
458454
};
459455
let archive_reader = ArchiveReader::new(config, &metrics)?;
460456
archive_reader.sync_manifest_once().await?;
@@ -487,7 +483,7 @@ where
487483
let config = ArchiveReaderConfig {
488484
remote_store_config,
489485
download_concurrency: NonZeroUsize::new(concurrency).unwrap(),
490-
use_for_pruning_watermark: false,
486+
ingestion_url: None,
491487
};
492488
let archive_reader = ArchiveReader::new(config, &metrics)?;
493489
archive_reader.sync_manifest_once().await?;

crates/sui-archival/src/reader.rs

Lines changed: 1 addition & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use bytes::buf::Reader;
99
use bytes::{Buf, Bytes};
1010
use futures::{StreamExt, TryStreamExt};
1111
use prometheus::{register_int_counter_vec_with_registry, IntCounterVec, Registry};
12-
use rand::seq::SliceRandom;
1312
use std::borrow::Borrow;
1413
use std::future;
1514
use std::ops::Range;
@@ -58,84 +57,12 @@ impl ArchiveReaderMetrics {
5857
}
5958
}
6059

61-
// ArchiveReaderBalancer selects archives for reading based on whether they can fulfill a checkpoint request
62-
#[derive(Default, Clone)]
63-
pub struct ArchiveReaderBalancer {
64-
readers: Vec<Arc<ArchiveReader>>,
65-
}
66-
67-
impl ArchiveReaderBalancer {
68-
pub fn new(configs: Vec<ArchiveReaderConfig>, registry: &Registry) -> Result<Self> {
69-
let mut readers = vec![];
70-
let metrics = ArchiveReaderMetrics::new(registry);
71-
for config in configs.into_iter() {
72-
readers.push(Arc::new(ArchiveReader::new(config.clone(), &metrics)?));
73-
}
74-
Ok(ArchiveReaderBalancer { readers })
75-
}
76-
pub async fn get_archive_watermark(&self) -> Result<Option<u64>> {
77-
let mut checkpoints: Vec<Result<CheckpointSequenceNumber>> = vec![];
78-
for reader in self
79-
.readers
80-
.iter()
81-
.filter(|r| r.use_for_pruning_watermark())
82-
{
83-
let latest_checkpoint = reader.latest_available_checkpoint().await;
84-
info!(
85-
"Latest archived checkpoint in remote store: {:?} is: {:?}",
86-
reader.remote_store_identifier(),
87-
latest_checkpoint
88-
);
89-
checkpoints.push(latest_checkpoint)
90-
}
91-
let checkpoints: Result<Vec<CheckpointSequenceNumber>> = checkpoints.into_iter().collect();
92-
checkpoints.map(|vec| vec.into_iter().min())
93-
}
94-
pub async fn pick_one_random(
95-
&self,
96-
checkpoint_range: Range<CheckpointSequenceNumber>,
97-
) -> Option<Arc<ArchiveReader>> {
98-
let mut archives_with_complete_range = vec![];
99-
for reader in self.readers.iter() {
100-
let latest_checkpoint = reader.latest_available_checkpoint().await.unwrap_or(0);
101-
if latest_checkpoint >= checkpoint_range.end {
102-
archives_with_complete_range.push(reader.clone());
103-
}
104-
}
105-
if !archives_with_complete_range.is_empty() {
106-
return Some(
107-
archives_with_complete_range
108-
.choose(&mut rand::thread_rng())
109-
.unwrap()
110-
.clone(),
111-
);
112-
}
113-
let mut archives_with_partial_range = vec![];
114-
for reader in self.readers.iter() {
115-
let latest_checkpoint = reader.latest_available_checkpoint().await.unwrap_or(0);
116-
if latest_checkpoint >= checkpoint_range.start {
117-
archives_with_partial_range.push(reader.clone());
118-
}
119-
}
120-
if !archives_with_partial_range.is_empty() {
121-
return Some(
122-
archives_with_partial_range
123-
.choose(&mut rand::thread_rng())
124-
.unwrap()
125-
.clone(),
126-
);
127-
}
128-
None
129-
}
130-
}
131-
13260
#[derive(Clone)]
13361
pub struct ArchiveReader {
13462
bucket: String,
13563
concurrency: usize,
13664
sender: Arc<Sender<()>>,
13765
manifest: Arc<Mutex<Manifest>>,
138-
use_for_pruning_watermark: bool,
13966
remote_object_store: Arc<dyn ObjectStoreGetExt>,
14067
archive_reader_metrics: Arc<ArchiveReaderMetrics>,
14168
}
@@ -161,7 +88,6 @@ impl ArchiveReader {
16188
manifest,
16289
sender: Arc::new(sender),
16390
remote_object_store,
164-
use_for_pruning_watermark: config.use_for_pruning_watermark,
16591
concurrency: config.download_concurrency.get(),
16692
archive_reader_metrics: metrics.clone(),
16793
})
@@ -524,10 +450,6 @@ impl ArchiveReader {
524450
.context("No checkpoint data in archive")
525451
}
526452

527-
pub fn use_for_pruning_watermark(&self) -> bool {
528-
self.use_for_pruning_watermark
529-
}
530-
531453
pub fn remote_store_identifier(&self) -> String {
532454
self.remote_object_store.to_string()
533455
}
@@ -565,7 +487,7 @@ impl ArchiveReader {
565487
}
566488

567489
/// Insert checkpoint summary if it doesn't already exist after verifying it
568-
fn get_or_insert_verified_checkpoint<S>(
490+
pub fn get_or_insert_verified_checkpoint<S>(
569491
store: &S,
570492
certified_checkpoint: CertifiedCheckpointSummary,
571493
verify: bool,

0 commit comments

Comments
 (0)