Skip to content

Commit

Permalink
refactor(config): improve collator config usability
Browse files Browse the repository at this point in the history
  • Loading branch information
Rexagon committed Jun 14, 2024
1 parent 3891bf8 commit 2087f61
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 40 deletions.
2 changes: 1 addition & 1 deletion collator/src/collator/build_block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ impl CollatorStdImpl {
if capabilities.contains(GlobalCapability::CapReportVersion) {
new_block_info.set_gen_software(Some(GlobalVersion {
version: self.config.supported_block_version,
capabilities: self.config.supported_capabilities.into(),
capabilities: self.config.supported_capabilities,
}));
}

Expand Down
13 changes: 7 additions & 6 deletions collator/src/manager/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1056,6 +1056,8 @@ where
.or_default();
last_collated_chain_times.push((chain_time, force_mc_block));

let mc_block_min_interval_ms = self.config.mc_block_min_interval.as_millis() as u64;

// check if should collate master in current shard
let should_collate_mc_block = if force_mc_block {
tracing::info!(
Expand All @@ -1069,20 +1071,19 @@ where
let chain_time_elapsed = chain_time
.checked_sub(self.next_mc_block_chain_time)
.unwrap_or_default();
let mc_block_interval_elapsed =
chain_time_elapsed > self.config.mc_block_min_interval_ms;
let mc_block_interval_elapsed = chain_time_elapsed > mc_block_min_interval_ms;
if mc_block_interval_elapsed {
tracing::debug!(
target: tracing_targets::COLLATION_MANAGER,
"Master block interval is {}ms, elapsed chain time {}ms exceeded the interval in current shard {}",
self.config.mc_block_min_interval_ms, chain_time_elapsed, shard_id,
mc_block_min_interval_ms, chain_time_elapsed, shard_id,
);
} else {
tracing::debug!(
target: tracing_targets::COLLATION_MANAGER,
"Elapsed chain time {}ms has not elapsed master block interval {}ms in current shard \
- do not need to collate next master block",
chain_time_elapsed, self.config.mc_block_min_interval_ms,
chain_time_elapsed, mc_block_min_interval_ms,
);
}
mc_block_interval_elapsed
Expand All @@ -1103,7 +1104,7 @@ where
|| (*chain_time)
.checked_sub(self.next_mc_block_chain_time)
.unwrap_or_default()
> self.config.mc_block_min_interval_ms
> mc_block_min_interval_ms
})
{
first_elapsed_chain_times.push(*chain_time_that_elapsed);
Expand All @@ -1129,7 +1130,7 @@ where
target: tracing_targets::COLLATION_MANAGER,
"Master block collation forced or interval {}ms elapsed in every shard - \
will collate next master block with chain time {}ms",
self.config.mc_block_min_interval_ms, max_first_chain_time_that_elapsed,
mc_block_min_interval_ms, max_first_chain_time_that_elapsed,
);
return (
should_collate_mc_block,
Expand Down
13 changes: 7 additions & 6 deletions collator/src/types.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::sync::Arc;
use std::time::Duration;

use everscale_crypto::ed25519::KeyPair;
use everscale_types::cell::HashBytes;
Expand All @@ -10,15 +11,16 @@ use serde::{Deserialize, Serialize};
use tycho_block_util::block::{BlockStuffAug, ValidatorSubsetInfo};
use tycho_block_util::state::ShardStateStuff;
use tycho_network::{DhtClient, OverlayService, PeerResolver};
use tycho_util::FastHashMap;
use tycho_util::{serde_helpers, FastHashMap};

#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(default)]
pub struct CollationConfig {
pub supported_block_version: u32,
pub supported_capabilities: u64,
pub supported_capabilities: GlobalCapabilities,

pub mc_block_min_interval_ms: u64,
#[serde(with = "serde_helpers::humantime")]
pub mc_block_min_interval: Duration,
pub max_mc_block_delta_from_bc_to_await_own: i32,
pub max_uncommitted_chain_length: u32,
pub uncommitted_chain_to_import_next_anchor: u32,
Expand All @@ -34,7 +36,7 @@ impl Default for CollationConfig {
supported_block_version: 50,
supported_capabilities: supported_capabilities(),

mc_block_min_interval_ms: 2500,
mc_block_min_interval: Duration::from_millis(2500),
max_mc_block_delta_from_bc_to_await_own: 2,

max_uncommitted_chain_length: 31,
Expand All @@ -47,7 +49,7 @@ impl Default for CollationConfig {
}
}

fn supported_capabilities() -> u64 {
pub fn supported_capabilities() -> GlobalCapabilities {
GlobalCapabilities::from([
GlobalCapability::CapCreateStatsEnabled,
GlobalCapability::CapBounceMsgBody,
Expand All @@ -69,7 +71,6 @@ fn supported_capabilities() -> u64 {
GlobalCapability::CapSuspendedList,
GlobalCapability::CapsTvmBugfixes2022,
])
.into_inner()
}

#[derive(Debug, Serialize, Deserialize, Clone)]
Expand Down
29 changes: 2 additions & 27 deletions collator/tests/collation_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use tycho_collator::mempool::MempoolAdapterStubImpl;
use tycho_collator::queue_adapter::MessageQueueAdapterStdImpl;
use tycho_collator::state_node::{StateNodeAdapter, StateNodeAdapterStdImpl};
use tycho_collator::test_utils::{prepare_test_storage, try_init_test_tracing};
use tycho_collator::types::{CollationConfig, MsgsExecutionParams};
use tycho_collator::types::{supported_capabilities, CollationConfig, MsgsExecutionParams};
use tycho_collator::validator::client::retry::BackoffConfig;
use tycho_collator::validator::config::ValidatorConfig;
use tycho_collator::validator::validator::ValidatorStdImplFactory;
Expand Down Expand Up @@ -84,7 +84,7 @@ async fn test_collation_process_on_stubs() {
let config = CollationConfig {
supported_block_version: 50,
supported_capabilities: supported_capabilities(),
mc_block_min_interval_ms: 10000,
mc_block_min_interval: Duration::from_secs(1),
max_mc_block_delta_from_bc_to_await_own: 2,
max_uncommitted_chain_length: 31,
uncommitted_chain_to_import_next_anchor: 8,
Expand Down Expand Up @@ -187,28 +187,3 @@ async fn test_collation_process_on_stubs() {
}
}
}

fn supported_capabilities() -> u64 {
let caps = GlobalCapability::CapCreateStatsEnabled as u64
| GlobalCapability::CapBounceMsgBody as u64
| GlobalCapability::CapReportVersion as u64
| GlobalCapability::CapShortDequeue as u64
| GlobalCapability::CapRemp as u64
| GlobalCapability::CapInitCodeHash as u64
| GlobalCapability::CapOffHypercube as u64
| GlobalCapability::CapFixTupleIndexBug as u64
| GlobalCapability::CapFastStorageStat as u64
| GlobalCapability::CapMyCode as u64
| GlobalCapability::CapCopyleft as u64
| GlobalCapability::CapFullBodyInBounced as u64
| GlobalCapability::CapStorageFeeToTvm as u64
| GlobalCapability::CapWorkchains as u64
| GlobalCapability::CapStcontNewFormat as u64
| GlobalCapability::CapFastStorageStatBugfix as u64
| GlobalCapability::CapResolveMerkleCell as u64
| GlobalCapability::CapFeeInGasUnits as u64
| GlobalCapability::CapBounceAfterFailedAction as u64
| GlobalCapability::CapSuspendedList as u64
| GlobalCapability::CapsTvmBugfixes2022 as u64;
caps
}

0 comments on commit 2087f61

Please sign in to comment.