20260410 完成五个rir 基于cir的三方回放,raw by hash 独立db,发现内存占用大,连续大rir 录制发生oom
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use rpki::bundle::{
|
||||
RirBundleMetadata, RecordingHttpFetcher, RecordingRsyncFetcher,
|
||||
build_single_rir_bundle_manifest, build_vap_compare_rows, build_vrp_compare_rows,
|
||||
sha256_hex, write_json, write_live_base_replay_bundle_inputs, write_live_bundle_rir_readme,
|
||||
RecordingHttpFetcher, RecordingRsyncFetcher, RirBundleMetadata,
|
||||
build_single_rir_bundle_manifest, build_vap_compare_rows, build_vrp_compare_rows, sha256_hex,
|
||||
write_json, write_live_base_replay_bundle_inputs, write_live_bundle_rir_readme,
|
||||
write_live_bundle_top_readme, write_timing_json, write_vap_csv, write_vrp_csv,
|
||||
};
|
||||
use rpki::ccr::{build_ccr_from_run, verify_content_info, write_ccr_file};
|
||||
@@ -54,15 +54,21 @@ fn parse_args(argv: &[String]) -> Result<Args, String> {
|
||||
}
|
||||
"--out-dir" => {
|
||||
i += 1;
|
||||
args.out_dir = Some(PathBuf::from(argv.get(i).ok_or("--out-dir requires a value")?));
|
||||
args.out_dir = Some(PathBuf::from(
|
||||
argv.get(i).ok_or("--out-dir requires a value")?,
|
||||
));
|
||||
}
|
||||
"--tal-path" => {
|
||||
i += 1;
|
||||
args.tal_path = Some(PathBuf::from(argv.get(i).ok_or("--tal-path requires a value")?));
|
||||
args.tal_path = Some(PathBuf::from(
|
||||
argv.get(i).ok_or("--tal-path requires a value")?,
|
||||
));
|
||||
}
|
||||
"--ta-path" => {
|
||||
i += 1;
|
||||
args.ta_path = Some(PathBuf::from(argv.get(i).ok_or("--ta-path requires a value")?));
|
||||
args.ta_path = Some(PathBuf::from(
|
||||
argv.get(i).ok_or("--ta-path requires a value")?,
|
||||
));
|
||||
}
|
||||
"--validation-time" => {
|
||||
i += 1;
|
||||
@@ -90,8 +96,9 @@ fn parse_args(argv: &[String]) -> Result<Args, String> {
|
||||
}
|
||||
"--rsync-mirror-root" => {
|
||||
i += 1;
|
||||
args.rsync_mirror_root =
|
||||
Some(PathBuf::from(argv.get(i).ok_or("--rsync-mirror-root requires a value")?));
|
||||
args.rsync_mirror_root = Some(PathBuf::from(
|
||||
argv.get(i).ok_or("--rsync-mirror-root requires a value")?,
|
||||
));
|
||||
}
|
||||
"--max-depth" => {
|
||||
i += 1;
|
||||
@@ -113,7 +120,11 @@ fn parse_args(argv: &[String]) -> Result<Args, String> {
|
||||
}
|
||||
"--trust-anchor" => {
|
||||
i += 1;
|
||||
args.trust_anchor = Some(argv.get(i).ok_or("--trust-anchor requires a value")?.clone());
|
||||
args.trust_anchor = Some(
|
||||
argv.get(i)
|
||||
.ok_or("--trust-anchor requires a value")?
|
||||
.clone(),
|
||||
);
|
||||
}
|
||||
other => return Err(format!("unknown argument: {other}\n{}", usage())),
|
||||
}
|
||||
@@ -147,11 +158,13 @@ fn run(args: Args) -> Result<PathBuf, String> {
|
||||
fs::create_dir_all(&rir_dir)
|
||||
.map_err(|e| format!("create rir dir failed: {}: {e}", rir_dir.display()))?;
|
||||
|
||||
let tal_bytes = fs::read(args.tal_path.as_ref().unwrap())
|
||||
.map_err(|e| format!("read tal failed: {e}"))?;
|
||||
let ta_bytes = fs::read(args.ta_path.as_ref().unwrap())
|
||||
.map_err(|e| format!("read ta failed: {e}"))?;
|
||||
let validation_time = args.validation_time.unwrap_or_else(time::OffsetDateTime::now_utc);
|
||||
let tal_bytes =
|
||||
fs::read(args.tal_path.as_ref().unwrap()).map_err(|e| format!("read tal failed: {e}"))?;
|
||||
let ta_bytes =
|
||||
fs::read(args.ta_path.as_ref().unwrap()).map_err(|e| format!("read ta failed: {e}"))?;
|
||||
let validation_time = args
|
||||
.validation_time
|
||||
.unwrap_or_else(time::OffsetDateTime::now_utc);
|
||||
|
||||
let db_dir = out_root.join(".tmp").join(format!("{rir}-live-base-db"));
|
||||
let replay_db_dir = out_root.join(".tmp").join(format!("{rir}-self-replay-db"));
|
||||
@@ -205,8 +218,8 @@ fn run(args: Args) -> Result<PathBuf, String> {
|
||||
.map_err(|e| format!("build ccr failed: {e}"))?;
|
||||
let base_ccr_path = rir_dir.join("base.ccr");
|
||||
write_ccr_file(&base_ccr_path, &ccr).map_err(|e| format!("write ccr failed: {e}"))?;
|
||||
let ccr_bytes =
|
||||
fs::read(&base_ccr_path).map_err(|e| format!("read written ccr failed: {}: {e}", base_ccr_path.display()))?;
|
||||
let ccr_bytes = fs::read(&base_ccr_path)
|
||||
.map_err(|e| format!("read written ccr failed: {}: {e}", base_ccr_path.display()))?;
|
||||
let decoded = rpki::ccr::decode_content_info(&ccr_bytes)
|
||||
.map_err(|e| format!("decode written ccr failed: {e}"))?;
|
||||
let verify = verify_content_info(&decoded).map_err(|e| format!("verify ccr failed: {e}"))?;
|
||||
@@ -235,8 +248,8 @@ fn run(args: Args) -> Result<PathBuf, String> {
|
||||
&rsync.snapshot_fetches(),
|
||||
)?;
|
||||
|
||||
let replay_store =
|
||||
RocksStore::open(&replay_db_dir).map_err(|e| format!("open self replay rocksdb failed: {e}"))?;
|
||||
let replay_store = RocksStore::open(&replay_db_dir)
|
||||
.map_err(|e| format!("open self replay rocksdb failed: {e}"))?;
|
||||
let replay_out = run_tree_from_tal_and_ta_der_payload_replay_serial_audit(
|
||||
&replay_store,
|
||||
&Policy::default(),
|
||||
@@ -320,7 +333,11 @@ fn run(args: Args) -> Result<PathBuf, String> {
|
||||
}),
|
||||
)?;
|
||||
write_live_bundle_top_readme(&out_root.join("README.md"), &rir_normalized)?;
|
||||
write_live_bundle_rir_readme(&rir_dir.join("README.md"), &rir_normalized, &metadata.base_validation_time)?;
|
||||
write_live_bundle_rir_readme(
|
||||
&rir_dir.join("README.md"),
|
||||
&rir_normalized,
|
||||
&metadata.base_validation_time,
|
||||
)?;
|
||||
write_json(
|
||||
&out_root.join("bundle-manifest.json"),
|
||||
&build_single_rir_bundle_manifest(
|
||||
|
||||
Reference in New Issue
Block a user