Compare commits

..

2 Commits

Author SHA1 Message Date
0g-peterzhb
31827d2791
Merge 9a11e969e6 into 4bb2fac98f 2024-12-05 13:05:01 +07:00
Bo QIU
4bb2fac98f
Optional subscribe FIND_CHUNKS topic (#291)
Some checks are pending
abi-consistent-check / build-and-compare (push) Waiting to run
code-coverage / unittest-cov (push) Waiting to run
rust / check (push) Waiting to run
rust / test (push) Waiting to run
rust / lints (push) Waiting to run
functional-test / test (push) Waiting to run
* sub annouce shard config msg

* Optional subscribe find_chunks topic
2024-12-05 14:04:57 +08:00
7 changed files with 25 additions and 10 deletions

View File

@ -133,6 +133,9 @@ pub struct Config {
/// Whether to disable network identity in ENR.
/// This is for test purpose only.
pub disable_enr_network_id: bool,
/// Whether to allow find chunks from peers.
pub find_chunks_enabled: bool,
}
impl Default for Config {
@ -214,6 +217,7 @@ impl Default for Config {
peer_db: Default::default(),
peer_manager: Default::default(),
disable_enr_network_id: false,
find_chunks_enabled: false,
}
}
}

View File

@ -243,7 +243,18 @@ impl<AppReqId: ReqId> Service<AppReqId> {
// }
// }
for topic_kind in &crate::types::CORE_TOPICS {
let mut topics = vec![
GossipKind::NewFile,
GossipKind::FindFile,
GossipKind::AnnounceFile,
GossipKind::AnnounceShardConfig,
];
if config.find_chunks_enabled {
topics.push(GossipKind::FindChunks);
topics.push(GossipKind::AnnounceChunks);
}
for topic_kind in topics {
if swarm.behaviour_mut().subscribe_kind(topic_kind.clone()) {
subscribed_topics.push(topic_kind.clone());
} else {

View File

@ -11,4 +11,4 @@ pub use pubsub::{
PubsubMessage, SignedAnnounceChunks, SignedAnnounceFile, SignedAnnounceShardConfig,
SignedMessage, SnappyTransform,
};
pub use topics::{GossipEncoding, GossipKind, GossipTopic, CORE_TOPICS};
pub use topics::{GossipEncoding, GossipKind, GossipTopic};

View File

@ -15,14 +15,6 @@ pub const ANNOUNCE_FILE_TOPIC: &str = "announce_file";
pub const ANNOUNCE_CHUNKS_TOPIC: &str = "announce_chunks";
pub const ANNOUNCE_SHARD_CONFIG_TOPIC: &str = "announce_shard_config";
pub const CORE_TOPICS: [GossipKind; 5] = [
GossipKind::NewFile,
GossipKind::FindFile,
GossipKind::FindChunks,
GossipKind::AnnounceFile,
GossipKind::AnnounceChunks,
];
/// A gossipsub topic which encapsulates the type of messages that should be sent and received over
/// the pubsub protocol and the way the messages should be encoded.
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]

View File

@ -111,6 +111,7 @@ impl ZgsConfig {
network_config.peer_db = self.network_peer_db;
network_config.peer_manager = self.network_peer_manager.clone();
network_config.disable_enr_network_id = self.discv5_disable_enr_network_id;
network_config.find_chunks_enabled = self.network_find_chunks_enabled;
Ok(network_config)
}

View File

@ -19,6 +19,7 @@ build_config! {
(network_libp2p_nodes, (Vec<String>), vec![])
(network_private, (bool), false)
(network_disable_discovery, (bool), false)
(network_find_chunks_enabled, (bool), false)
// discv5
(discv5_request_timeout_secs, (u64), 5)

View File

@ -14,6 +14,12 @@ class SyncTest(TestFramework):
def setup_params(self):
self.num_nodes = 2
# enable find chunks topic
for i in range(self.num_nodes):
self.zgs_node_configs[i] = {
"network_find_chunks_enabled": True
}
def run_test(self):
# By default, auto_sync_enabled and sync_file_on_announcement_enabled are both false,
# and file or chunks sync should be triggered by rpc.