From cf7eae9e4b4ed5e796979440632af45477e97005 Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Thu, 4 Sep 2025 23:16:35 -0300 Subject: [PATCH 1/7] feat: add SetInstructionsProfiling simnet command, disabling profiling during runbook deployments --- crates/cli/src/cli/simnet/mod.rs | 7 ++++--- crates/cli/src/tui/simnet.rs | 1 + crates/core/src/runloops/mod.rs | 5 +++++ crates/types/src/types.rs | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index 67c6e329..17a285df 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -20,7 +20,7 @@ use serde::{Deserialize, Serialize}; use solana_keypair::Keypair; use solana_signer::Signer; use surfpool_core::{start_local_surfnet, surfnet::svm::SurfnetSvm}; -use surfpool_types::{SanitizedConfig, SimnetEvent, SubgraphEvent}; +use surfpool_types::{SanitizedConfig, SimnetCommand, SimnetEvent, SubgraphEvent}; use txtx_core::kit::{ channel::Receiver, futures::future::join_all, helpers::fs::FileLocation, types::frontend::BlockEvent, @@ -382,7 +382,7 @@ async fn write_and_execute_iac( .map_err(|e| format!("Failed to detect project framework: {}", e))?; let (progress_tx, progress_rx) = crossbeam::channel::unbounded(); - + let (simnet_commands_tx, _simnet_commands_rx) = crossbeam::channel::unbounded(); if let Some((framework, programs)) = deployment { // Is infrastructure-as-code (IaC) already setup? let base_location = @@ -468,8 +468,9 @@ async fn write_and_execute_iac( simnet_events_tx.clone(), ExecuteRunbook::default_localnet(runbook_id) .with_manifest_path(txtx_manifest_location.to_string()), - false, + false, )); + let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); } let _ = hiro_system_kit::nestable_block_on(join_all(futures)); } diff --git a/crates/cli/src/tui/simnet.rs b/crates/cli/src/tui/simnet.rs index 6970e915..d1a52ed8 100644 --- a/crates/cli/src/tui/simnet.rs +++ b/crates/cli/src/tui/simnet.rs @@ -545,6 +545,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( Local::now(), format!("Runbook '{}' execution started", runbook_id), )); + let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); } SimnetEvent::RunbookCompleted(runbook_id) => { deployment_completed = true; diff --git a/crates/core/src/runloops/mod.rs b/crates/core/src/runloops/mod.rs index 0bfc162a..52df031e 100644 --- a/crates/core/src/runloops/mod.rs +++ b/crates/core/src/runloops/mod.rs @@ -221,6 +221,11 @@ pub async fn start_block_production_runloop( let _ = svm_locker.simnet_events_tx().send(SimnetEvent::Aborted("Terminated due to inactivity.".to_string())); break; } + SimnetCommand::SetInstructionProfiling(enabled) => { + svm_locker.with_svm_writer(|svm_writer| { + svm_writer.instruction_profiling_enabled = enabled; + }); + } } }, } diff --git a/crates/types/src/types.rs b/crates/types/src/types.rs index ed9a13d9..092585ff 100644 --- a/crates/types/src/types.rs +++ b/crates/types/src/types.rs @@ -463,6 +463,7 @@ pub enum SimnetCommand { bool, ), Terminate(Option<(Hash, String)>), + SetInstructionProfiling(bool), } #[derive(Debug)] From 237e1c22b8117e7114b7cc6e8a07139c44438018 Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Thu, 4 Sep 2025 23:18:27 -0300 Subject: [PATCH 2/7] fix: fmt --- crates/cli/src/cli/simnet/mod.rs | 5 +++-- crates/cli/src/tui/simnet.rs | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index 17a285df..52cbc162 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -468,9 +468,10 @@ async fn write_and_execute_iac( simnet_events_tx.clone(), ExecuteRunbook::default_localnet(runbook_id) .with_manifest_path(txtx_manifest_location.to_string()), - false, + false, )); - let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); + let _ = simnet_commands_tx + .send(SimnetCommand::SetInstructionProfiling(false)); } let _ = hiro_system_kit::nestable_block_on(join_all(futures)); } diff --git a/crates/cli/src/tui/simnet.rs b/crates/cli/src/tui/simnet.rs index d1a52ed8..b3d95fc5 100644 --- a/crates/cli/src/tui/simnet.rs +++ b/crates/cli/src/tui/simnet.rs @@ -545,7 +545,9 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( Local::now(), format!("Runbook '{}' execution started", runbook_id), )); - let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); + let _ = app + .simnet_commands_tx + .send(SimnetCommand::SetInstructionProfiling(false)); } SimnetEvent::RunbookCompleted(runbook_id) => { deployment_completed = true; From 1b65bb3012d3514444061c811c46d9ae440325a2 Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Fri, 5 Sep 2025 11:27:41 -0300 Subject: [PATCH 3/7] wip --- crates/cli/src/cli/simnet/mod.rs | 9 +++++---- crates/cli/src/tui/simnet.rs | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index 52cbc162..7259df18 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -216,6 +216,7 @@ fn log_events( include_debug_logs: bool, deploy_progress_rx: Vec>, ) -> Result<(), String> { + let (simnet_commands_tx, _simnet_commands_rx) = crossbeam::channel::unbounded(); let mut deployment_completed = false; let stop_loop = Arc::new(AtomicBool::new(false)); let do_stop_loop = stop_loop.clone(); @@ -317,10 +318,12 @@ fn log_events( SimnetEvent::RunbookStarted(runbook_id) => { deployment_completed = false; info!("Runbook '{}' execution started", runbook_id); + let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); } SimnetEvent::RunbookCompleted(runbook_id) => { deployment_completed = true; info!("Runbook '{}' execution completed", runbook_id); + let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); } }, Err(_e) => { @@ -365,6 +368,7 @@ fn log_events( }, Err(_e) => { deployment_completed = true; + let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); } }, } @@ -382,7 +386,6 @@ async fn write_and_execute_iac( .map_err(|e| format!("Failed to detect project framework: {}", e))?; let (progress_tx, progress_rx) = crossbeam::channel::unbounded(); - let (simnet_commands_tx, _simnet_commands_rx) = crossbeam::channel::unbounded(); if let Some((framework, programs)) = deployment { // Is infrastructure-as-code (IaC) already setup? let base_location = @@ -469,9 +472,7 @@ async fn write_and_execute_iac( ExecuteRunbook::default_localnet(runbook_id) .with_manifest_path(txtx_manifest_location.to_string()), false, - )); - let _ = simnet_commands_tx - .send(SimnetCommand::SetInstructionProfiling(false)); + )); } let _ = hiro_system_kit::nestable_block_on(join_all(futures)); } diff --git a/crates/cli/src/tui/simnet.rs b/crates/cli/src/tui/simnet.rs index b3d95fc5..59067e3a 100644 --- a/crates/cli/src/tui/simnet.rs +++ b/crates/cli/src/tui/simnet.rs @@ -556,6 +556,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( Local::now(), format!("Runbook '{}' execution completed", runbook_id), )); + let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); app.status_bar_message = None; } }, @@ -651,6 +652,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( }, Err(_) => { deployment_completed = true; + let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); } }, } From 25cd85d0e44faf044e70a79008def3a292fd673f Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Fri, 5 Sep 2025 19:26:59 -0300 Subject: [PATCH 4/7] fix: fmt --- crates/cli/src/cli/simnet/mod.rs | 8 +++++--- crates/cli/src/tui/simnet.rs | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index 7259df18..0eb64626 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -318,12 +318,14 @@ fn log_events( SimnetEvent::RunbookStarted(runbook_id) => { deployment_completed = false; info!("Runbook '{}' execution started", runbook_id); - let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); + let _ = + simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(false)); } SimnetEvent::RunbookCompleted(runbook_id) => { deployment_completed = true; info!("Runbook '{}' execution completed", runbook_id); - let _ = simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); + let _ = + simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); } }, Err(_e) => { @@ -472,7 +474,7 @@ async fn write_and_execute_iac( ExecuteRunbook::default_localnet(runbook_id) .with_manifest_path(txtx_manifest_location.to_string()), false, - )); + )); } let _ = hiro_system_kit::nestable_block_on(join_all(futures)); } diff --git a/crates/cli/src/tui/simnet.rs b/crates/cli/src/tui/simnet.rs index 59067e3a..492a8949 100644 --- a/crates/cli/src/tui/simnet.rs +++ b/crates/cli/src/tui/simnet.rs @@ -556,7 +556,9 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( Local::now(), format!("Runbook '{}' execution completed", runbook_id), )); - let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); + let _ = app + .simnet_commands_tx + .send(SimnetCommand::SetInstructionProfiling(true)); app.status_bar_message = None; } }, @@ -652,7 +654,9 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( }, Err(_) => { deployment_completed = true; - let _ = app.simnet_commands_tx.send(SimnetCommand::SetInstructionProfiling(true)); + let _ = app + .simnet_commands_tx + .send(SimnetCommand::SetInstructionProfiling(true)); } }, } From c2b4b9f07225556c5f23ddae7dfadb2afc061d23 Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Tue, 9 Sep 2025 14:59:15 -0300 Subject: [PATCH 5/7] wip --- crates/cli/src/cli/simnet/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index 0eb64626..cb462568 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -192,6 +192,7 @@ pub async fn handle_start_local_surfnet_command( subgraph_events_rx, cmd.debug, deploy_progress_rx, + simnet_commands_tx )?; } else { tui::simnet::start_app( @@ -215,8 +216,8 @@ fn log_events( subgraph_events_rx: Receiver, include_debug_logs: bool, deploy_progress_rx: Vec>, + simnet_commands_tx: Sender, ) -> Result<(), String> { - let (simnet_commands_tx, _simnet_commands_rx) = crossbeam::channel::unbounded(); let mut deployment_completed = false; let stop_loop = Arc::new(AtomicBool::new(false)); let do_stop_loop = stop_loop.clone(); From 60de8bddffda37f9297124a0cb282deabb8dfc96 Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Tue, 9 Sep 2025 16:33:50 -0300 Subject: [PATCH 6/7] fix: fmt --- crates/cli/src/cli/simnet/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cli/src/cli/simnet/mod.rs b/crates/cli/src/cli/simnet/mod.rs index cb462568..674bad7e 100644 --- a/crates/cli/src/cli/simnet/mod.rs +++ b/crates/cli/src/cli/simnet/mod.rs @@ -192,7 +192,7 @@ pub async fn handle_start_local_surfnet_command( subgraph_events_rx, cmd.debug, deploy_progress_rx, - simnet_commands_tx + simnet_commands_tx, )?; } else { tui::simnet::start_app( From 1086fe1afe8fc3aba1da6fc36ca45ea704fd88bf Mon Sep 17 00:00:00 2001 From: BretasArthur1 Date: Fri, 12 Sep 2025 14:24:21 -0300 Subject: [PATCH 7/7] fix: typo --- crates/cli/src/tui/simnet.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cli/src/tui/simnet.rs b/crates/cli/src/tui/simnet.rs index cd9c6bc1..bdc714d4 100644 --- a/crates/cli/src/tui/simnet.rs +++ b/crates/cli/src/tui/simnet.rs @@ -659,7 +659,7 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( deployment_completed = true; let _ = app .simnet_commands_tx - .send(SimnetCommand::SetInstructionProfiling(true)) + .send(SimnetCommand::SetInstructionProfiling(true)); break; } },