Track CAS providers
This commit is contained in:
parent
df70b81a1d
commit
c9803ea7f2
8 changed files with 161 additions and 11 deletions
|
|
@ -8,7 +8,7 @@ use geth_cas::{
|
|||
};
|
||||
use geth_config::{GethConfig, GethPaths, RelayMode};
|
||||
use geth_control::{
|
||||
CasBlob, ControlRequest, ControlResponse, KeychainStatusResponse, NodeIdResponse,
|
||||
CasBlob, CasProvider, ControlRequest, ControlResponse, KeychainStatusResponse, NodeIdResponse,
|
||||
PeerControlRequest, PeerControlResponse, StatusResponse, SyncWatermark,
|
||||
};
|
||||
use geth_crypto::AgentKey;
|
||||
|
|
@ -799,6 +799,7 @@ async fn cas_fetch_from_peer(
|
|||
info.size_bytes,
|
||||
&info.path.to_string_lossy(),
|
||||
)?;
|
||||
store.record_cas_provider(info.hash.as_str(), &node_id, &endpoint_id)?;
|
||||
Ok(ControlResponse::CasFetched {
|
||||
peer_node_id: node_id,
|
||||
peer_agent_id: agent_id,
|
||||
|
|
@ -2592,6 +2593,21 @@ pub fn handle_request(
|
|||
dry_run,
|
||||
})
|
||||
}
|
||||
ControlRequest::CasProviders { hash } => {
|
||||
geth_cas::validate_hash(&hash)?;
|
||||
Ok(ControlResponse::CasProviders {
|
||||
providers: store
|
||||
.list_cas_providers(hash.as_str())?
|
||||
.into_iter()
|
||||
.map(|provider| CasProvider {
|
||||
peer_node_id: provider.peer_node_id,
|
||||
endpoint_id: provider.endpoint_id,
|
||||
last_seen_ms: provider.last_seen_ms,
|
||||
})
|
||||
.collect(),
|
||||
hash,
|
||||
})
|
||||
}
|
||||
ControlRequest::CasList => {
|
||||
let cas = LocalCas::new(node.paths.cas_dir());
|
||||
let blobs = cas
|
||||
|
|
@ -4651,6 +4667,12 @@ mod tests {
|
|||
}
|
||||
other => panic!("unexpected allowed CAS fetch response: {other:?}"),
|
||||
}
|
||||
let providers = Store::open(&left_paths.metadata_db())
|
||||
.expect("open left after cas fetch")
|
||||
.list_cas_providers(right_blob.hash.as_str())
|
||||
.expect("list cas providers");
|
||||
assert_eq!(providers.len(), 1);
|
||||
assert_eq!(providers[0].peer_node_id, right.node_id);
|
||||
|
||||
let kv_synced = handle_request_async(
|
||||
&left,
|
||||
|
|
|
|||
Loading…
Reference in a new issue