20260803 死repo传输层黑名单+daemon健康检查摘除(#141)
This commit is contained in:
@@ -345,6 +345,56 @@ fn persist_transport_request_prefetch_snapshot(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Persist the dead-repo blacklist working copy at run end (#141). Failures
|
||||
/// degrade to a progress event; a broken blacklist file must never fail a run.
|
||||
fn persist_dead_repo_blacklist(
|
||||
runtime: &Arc<dyn RepoSyncRuntime>,
|
||||
timing: Option<&TimingHandle>,
|
||||
) -> Result<(), RunTreeFromTalError> {
|
||||
let Some((blacklist_config, blacklist)) = runtime.dead_repo_blacklist_state() else {
|
||||
return Ok(());
|
||||
};
|
||||
let persist_started = std::time::Instant::now();
|
||||
let now_unix = std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.map(|duration| duration.as_secs())
|
||||
.unwrap_or(0);
|
||||
match blacklist.store_atomic(&blacklist_config.path, now_unix) {
|
||||
Ok(()) => {
|
||||
let persist_ms = persist_started.elapsed().as_millis() as u64;
|
||||
record_transport_prefetch_count(
|
||||
timing,
|
||||
"dead_repo_blacklist_entries",
|
||||
blacklist.len() as u64,
|
||||
);
|
||||
record_transport_prefetch_count(
|
||||
timing,
|
||||
"dead_repo_blacklist_blacklisted",
|
||||
blacklist.blacklisted_len() as u64,
|
||||
);
|
||||
crate::progress_log::emit(
|
||||
"dead_repo_blacklist_persisted",
|
||||
serde_json::json!({
|
||||
"path": blacklist_config.path.display().to_string(),
|
||||
"entries": blacklist.len(),
|
||||
"blacklisted": blacklist.blacklisted_len(),
|
||||
"persist_ms": persist_ms,
|
||||
}),
|
||||
);
|
||||
}
|
||||
Err(err) => {
|
||||
crate::progress_log::emit(
|
||||
"dead_repo_blacklist_persist_error",
|
||||
serde_json::json!({
|
||||
"path": blacklist_config.path.display().to_string(),
|
||||
"error": err.to_string(),
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn root_discovery_from_tal_input(
|
||||
tal_input: &TalInputSpec,
|
||||
http_fetcher: &dyn Fetcher,
|
||||
@@ -813,6 +863,7 @@ where
|
||||
run_tree_serial_audit(root, &runner, config)?
|
||||
};
|
||||
persist_transport_request_prefetch_snapshot(store.as_ref(), &runtime, config, timing.as_ref())?;
|
||||
persist_dead_repo_blacklist(&runtime, timing.as_ref())?;
|
||||
let downloads = download_log.snapshot_events();
|
||||
let download_stats = DownloadLogHandle::stats_from_events(&downloads);
|
||||
Ok(RunTreeFromTalAuditOutput {
|
||||
@@ -936,6 +987,7 @@ where
|
||||
run_tree_serial_audit_multi_root(root_handles, &runner, config)?
|
||||
};
|
||||
persist_transport_request_prefetch_snapshot(store.as_ref(), &runtime, config, timing.as_ref())?;
|
||||
persist_dead_repo_blacklist(&runtime, timing.as_ref())?;
|
||||
let downloads = download_log.snapshot_events();
|
||||
let download_stats = DownloadLogHandle::stats_from_events(&downloads);
|
||||
Ok(RunTreeFromTalAuditOutput {
|
||||
|
||||
Reference in New Issue
Block a user