mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-17 10:48:28 +00:00
Anchor pre-PR: Decouple eth2 (#6770)
* decouple `eth2` from `store` and `lighthouse_network` Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com> * remove unused dependency --------- Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com> Co-authored-by: Jimmy Chen <jimmy@sigmaprime.io>
This commit is contained in:
@@ -30,6 +30,7 @@ rand = { workspace = true }
|
||||
safe_arith = { workspace = true }
|
||||
sensitive_url = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
slog = { workspace = true }
|
||||
slot_clock = { workspace = true }
|
||||
state_processing = { workspace = true }
|
||||
@@ -48,7 +49,6 @@ warp_utils = { workspace = true }
|
||||
genesis = { workspace = true }
|
||||
logging = { workspace = true }
|
||||
proto_array = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
|
||||
[[test]]
|
||||
name = "bn_http_api_tests"
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
use beacon_chain::store::metadata::CURRENT_SCHEMA_VERSION;
|
||||
use beacon_chain::{BeaconChain, BeaconChainTypes};
|
||||
use eth2::lighthouse::DatabaseInfo;
|
||||
use serde::Serialize;
|
||||
use std::sync::Arc;
|
||||
use store::{AnchorInfo, BlobInfo, Split, StoreConfig};
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct DatabaseInfo {
|
||||
pub schema_version: u64,
|
||||
pub config: StoreConfig,
|
||||
pub split: Split,
|
||||
pub anchor: AnchorInfo,
|
||||
pub blob_info: BlobInfo,
|
||||
}
|
||||
|
||||
pub fn info<T: BeaconChainTypes>(
|
||||
chain: Arc<BeaconChain<T>>,
|
||||
|
||||
@@ -3059,9 +3059,9 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
peer_id: peer_id.to_string(),
|
||||
enr: peer_info.enr().map(|enr| enr.to_base64()),
|
||||
last_seen_p2p_address: address,
|
||||
direction: api_types::PeerDirection::from_connection_direction(dir),
|
||||
state: api_types::PeerState::from_peer_connection_status(
|
||||
peer_info.connection_status(),
|
||||
direction: api_types::PeerDirection::from((*dir).clone()),
|
||||
state: api_types::PeerState::from(
|
||||
peer_info.connection_status().clone(),
|
||||
),
|
||||
}));
|
||||
}
|
||||
@@ -3104,10 +3104,9 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
|
||||
// the eth2 API spec implies only peers we have been connected to at some point should be included.
|
||||
if let Some(dir) = peer_info.connection_direction() {
|
||||
let direction =
|
||||
api_types::PeerDirection::from_connection_direction(dir);
|
||||
let state = api_types::PeerState::from_peer_connection_status(
|
||||
peer_info.connection_status(),
|
||||
let direction = api_types::PeerDirection::from((*dir).clone());
|
||||
let state = api_types::PeerState::from(
|
||||
peer_info.connection_status().clone(),
|
||||
);
|
||||
|
||||
let state_matches = query.state.as_ref().map_or(true, |states| {
|
||||
@@ -3160,9 +3159,8 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
.read()
|
||||
.peers()
|
||||
.for_each(|(_, peer_info)| {
|
||||
let state = api_types::PeerState::from_peer_connection_status(
|
||||
peer_info.connection_status(),
|
||||
);
|
||||
let state =
|
||||
api_types::PeerState::from(peer_info.connection_status().clone());
|
||||
match state {
|
||||
api_types::PeerState::Connected => connected += 1,
|
||||
api_types::PeerState::Connecting => connecting += 1,
|
||||
@@ -4175,15 +4173,18 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
|task_spawner: TaskSpawner<T::EthSpec>,
|
||||
network_globals: Arc<NetworkGlobals<T::EthSpec>>| {
|
||||
task_spawner.blocking_json_task(Priority::P1, move || {
|
||||
Ok(network_globals
|
||||
.peers
|
||||
.read()
|
||||
.peers()
|
||||
.map(|(peer_id, peer_info)| eth2::lighthouse::Peer {
|
||||
let mut peers = vec![];
|
||||
for (peer_id, peer_info) in network_globals.peers.read().peers() {
|
||||
peers.push(eth2::lighthouse::Peer {
|
||||
peer_id: peer_id.to_string(),
|
||||
peer_info: peer_info.clone(),
|
||||
})
|
||||
.collect::<Vec<_>>())
|
||||
peer_info: serde_json::to_value(peer_info).map_err(|e| {
|
||||
warp_utils::reject::custom_not_found(format!(
|
||||
"unable to serialize peer_info: {e:?}",
|
||||
))
|
||||
})?,
|
||||
});
|
||||
}
|
||||
Ok(peers)
|
||||
})
|
||||
},
|
||||
);
|
||||
@@ -4199,15 +4200,18 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
|task_spawner: TaskSpawner<T::EthSpec>,
|
||||
network_globals: Arc<NetworkGlobals<T::EthSpec>>| {
|
||||
task_spawner.blocking_json_task(Priority::P1, move || {
|
||||
Ok(network_globals
|
||||
.peers
|
||||
.read()
|
||||
.connected_peers()
|
||||
.map(|(peer_id, peer_info)| eth2::lighthouse::Peer {
|
||||
let mut peers = vec![];
|
||||
for (peer_id, peer_info) in network_globals.peers.read().connected_peers() {
|
||||
peers.push(eth2::lighthouse::Peer {
|
||||
peer_id: peer_id.to_string(),
|
||||
peer_info: peer_info.clone(),
|
||||
})
|
||||
.collect::<Vec<_>>())
|
||||
peer_info: serde_json::to_value(peer_info).map_err(|e| {
|
||||
warp_utils::reject::custom_not_found(format!(
|
||||
"unable to serialize peer_info: {e:?}",
|
||||
))
|
||||
})?,
|
||||
});
|
||||
}
|
||||
Ok(peers)
|
||||
})
|
||||
},
|
||||
);
|
||||
|
||||
@@ -35,6 +35,7 @@ use state_processing::per_slot_processing;
|
||||
use state_processing::state_advance::partial_state_advance;
|
||||
use std::convert::TryInto;
|
||||
use std::sync::Arc;
|
||||
use store::{AnchorInfo, Split};
|
||||
use tokio::time::Duration;
|
||||
use tree_hash::TreeHash;
|
||||
use types::application_domain::ApplicationDomain;
|
||||
@@ -5646,10 +5647,16 @@ impl ApiTester {
|
||||
pub async fn test_get_lighthouse_database_info(self) -> Self {
|
||||
let info = self.client.get_lighthouse_database_info().await.unwrap();
|
||||
|
||||
assert_eq!(info.anchor, self.chain.store.get_anchor_info());
|
||||
assert_eq!(info.split, self.chain.store.get_split_info());
|
||||
assert_eq!(
|
||||
info.schema_version,
|
||||
serde_json::from_value::<AnchorInfo>(info.get("anchor").unwrap().clone()).unwrap(),
|
||||
self.chain.store.get_anchor_info()
|
||||
);
|
||||
assert_eq!(
|
||||
serde_json::from_value::<Split>(info.get("split").unwrap().clone()).unwrap(),
|
||||
self.chain.store.get_split_info()
|
||||
);
|
||||
assert_eq!(
|
||||
serde_json::from_value::<u64>(info.get("schema_version").unwrap().clone()).unwrap(),
|
||||
store::metadata::CURRENT_SCHEMA_VERSION.as_u64()
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user