Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(starknet_sequencer_node): set monitoring as active component #2576

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 1 addition & 46 deletions config/sequencer/default_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -507,52 +507,7 @@
"components.monitoring_endpoint.execution_mode": {
"description": "The component execution mode.",
"privacy": "Public",
"value": "LocalExecutionWithRemoteEnabled"
},
"components.monitoring_endpoint.local_server_config.#is_none": {
"description": "Flag for an optional field.",
"privacy": "TemporaryValue",
"value": false
},
"components.monitoring_endpoint.local_server_config.channel_buffer_size": {
"description": "The communication channel buffer size.",
"privacy": "Public",
"value": 32
},
"components.monitoring_endpoint.remote_client_config.#is_none": {
"description": "Flag for an optional field.",
"privacy": "TemporaryValue",
"value": true
},
"components.monitoring_endpoint.remote_client_config.idle_connections": {
"description": "The maximum number of idle connections to keep alive.",
"privacy": "Public",
"value": 18446744073709551615
},
"components.monitoring_endpoint.remote_client_config.idle_timeout": {
"description": "The duration in seconds to keep an idle connection open before closing.",
"privacy": "Public",
"value": 90
},
"components.monitoring_endpoint.remote_client_config.retries": {
"description": "The max number of retries for sending a message.",
"privacy": "Public",
"value": 3
},
"components.monitoring_endpoint.remote_client_config.socket": {
"description": "The remote component server socket.",
"privacy": "Public",
"value": "0.0.0.0:8080"
},
"components.monitoring_endpoint.remote_server_config.#is_none": {
"description": "Flag for an optional field.",
"privacy": "TemporaryValue",
"value": false
},
"components.monitoring_endpoint.remote_server_config.socket": {
"description": "The remote component server socket.",
"privacy": "Public",
"value": "0.0.0.0:8080"
"value": "Enabled"
},
"components.state_sync.execution_mode": {
"description": "The component execution mode.",
Expand Down
10 changes: 2 additions & 8 deletions crates/starknet_integration_tests/src/config_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,10 @@ pub fn get_local_with_remote_enabled_component_config(
}

pub async fn get_http_only_component_config(gateway_socket: SocketAddr) -> ComponentConfig {
let monitoring_endpoint_socket = get_available_socket().await;
ComponentConfig {
http_server: ReactiveComponentExecutionConfig::http_server_default_config(),
gateway: get_remote_component_config(gateway_socket),
monitoring_endpoint: get_local_with_remote_enabled_component_config(
monitoring_endpoint_socket,
),
monitoring_endpoint: Default::default(),
batcher: get_disabled_component_config(),
consensus_manager: get_disabled_component_config(),
mempool: get_disabled_component_config(),
Expand All @@ -141,12 +138,9 @@ pub async fn get_http_only_component_config(gateway_socket: SocketAddr) -> Compo
}

pub async fn get_non_http_component_config(gateway_socket: SocketAddr) -> ComponentConfig {
let monitoring_endpoint_socket = get_available_socket().await;
ComponentConfig {
http_server: get_disabled_component_config(),
monitoring_endpoint: get_local_with_remote_enabled_component_config(
monitoring_endpoint_socket,
),
monitoring_endpoint: Default::default(),
gateway: get_local_with_remote_enabled_component_config(gateway_socket),
..ComponentConfig::default()
}
Expand Down
15 changes: 9 additions & 6 deletions crates/starknet_sequencer_node/src/components.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ use starknet_monitoring_endpoint::monitoring_endpoint::{
use starknet_state_sync_types::communication::EmptyStateSyncClient;

use crate::clients::SequencerNodeClients;
use crate::config::component_execution_config::ReactiveComponentExecutionMode;
use crate::config::component_execution_config::{
ActiveComponentExecutionMode,
ReactiveComponentExecutionMode,
};
use crate::config::node_config::SequencerNodeConfig;
use crate::version::VERSION_FULL;

Expand Down Expand Up @@ -115,11 +118,11 @@ pub fn create_node_components(
};

let monitoring_endpoint = match config.components.monitoring_endpoint.execution_mode {
ReactiveComponentExecutionMode::LocalExecutionWithRemoteEnabled => Some(
create_monitoring_endpoint(config.monitoring_endpoint_config.clone(), VERSION_FULL),
),
ReactiveComponentExecutionMode::LocalExecutionWithRemoteDisabled => None,
ReactiveComponentExecutionMode::Disabled | ReactiveComponentExecutionMode::Remote => None,
ActiveComponentExecutionMode::Enabled => Some(create_monitoring_endpoint(
config.monitoring_endpoint_config.clone(),
VERSION_FULL,
)),
ActiveComponentExecutionMode::Disabled => None,
};

SequencerNodeComponents {
Expand Down
15 changes: 10 additions & 5 deletions crates/starknet_sequencer_node/src/config/component_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ use papyrus_config::{ParamPath, SerializedParam};
use serde::{Deserialize, Serialize};
use validator::Validate;

use crate::config::component_execution_config::ReactiveComponentExecutionConfig;
use crate::config::component_execution_config::{
ActiveComponentExecutionConfig,
ReactiveComponentExecutionConfig,
};

/// The components configuration.
#[derive(Clone, Debug, Serialize, Deserialize, Validate, PartialEq)]
pub struct ComponentConfig {
// Reactive component configs.
#[validate]
pub batcher: ReactiveComponentExecutionConfig,
#[validate]
Expand All @@ -23,9 +27,10 @@ pub struct ComponentConfig {
#[validate]
pub mempool_p2p: ReactiveComponentExecutionConfig,
#[validate]
pub monitoring_endpoint: ReactiveComponentExecutionConfig,
#[validate]
pub state_sync: ReactiveComponentExecutionConfig,

// Reactive component configs.
pub monitoring_endpoint: ActiveComponentExecutionConfig,
}

impl Default for ComponentConfig {
Expand All @@ -37,9 +42,9 @@ impl Default for ComponentConfig {
http_server: ReactiveComponentExecutionConfig::http_server_default_config(),
mempool: ReactiveComponentExecutionConfig::mempool_default_config(),
mempool_p2p: ReactiveComponentExecutionConfig::mempool_p2p_default_config(),
monitoring_endpoint:
ReactiveComponentExecutionConfig::monitoring_endpoint_default_config(),
state_sync: ReactiveComponentExecutionConfig::state_sync_default_config(),
// Reactive component configs.
monitoring_endpoint: Default::default(),
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,18 +115,6 @@ impl ReactiveComponentExecutionConfig {
}
}

// TODO(Tsabary/Lev): There's a bug here: the monitoring endpoint component does not
// need a local nor a remote config. However, the validation function requires that at least
// one of them is set. As a workaround I've set the local one, but this should be addressed.
pub fn monitoring_endpoint_default_config() -> Self {
Self {
execution_mode: ReactiveComponentExecutionMode::LocalExecutionWithRemoteEnabled,
local_server_config: Some(LocalServerConfig::default()),
remote_client_config: None,
remote_server_config: Some(RemoteServerConfig::default()),
}
}

pub fn mempool_default_config() -> Self {
Self {
execution_mode: ReactiveComponentExecutionMode::LocalExecutionWithRemoteDisabled,
Expand Down
21 changes: 19 additions & 2 deletions crates/starknet_sequencer_node/src/servers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ use tracing::error;
use crate::clients::SequencerNodeClients;
use crate::communication::SequencerNodeCommunication;
use crate::components::SequencerNodeComponents;
use crate::config::component_execution_config::ReactiveComponentExecutionMode;
use crate::config::component_execution_config::{
ActiveComponentExecutionMode,
ReactiveComponentExecutionMode,
};
use crate::config::node_config::SequencerNodeConfig;

// Component servers that can run locally.
Expand Down Expand Up @@ -211,6 +214,20 @@ macro_rules! create_wrapper_server {
};
}

// TODO(Tsabary): the following macro is a copy-pasted version of `create_wrapper_server!` macro,
// with the execution mode types changed. Once all active components have been marked as such, unify
// these.
macro_rules! create_wrapper_server_for_active_component {
($execution_mode:expr, $component:expr) => {
match *$execution_mode {
ActiveComponentExecutionMode::Enabled => Some(Box::new(WrapperServer::new(
$component.take().expect(concat!(stringify!($component), " is not initialized.")),
))),
ActiveComponentExecutionMode::Disabled => None,
}
};
}

fn create_local_servers(
config: &SequencerNodeConfig,
communication: &mut SequencerNodeCommunication,
Expand Down Expand Up @@ -296,7 +313,7 @@ fn create_wrapper_servers(
components.http_server
);

let monitoring_endpoint_server = create_wrapper_server!(
let monitoring_endpoint_server = create_wrapper_server_for_active_component!(
&config.components.monitoring_endpoint.execution_mode,
components.monitoring_endpoint
);
Expand Down
Loading