diff --git a/crates/turborepo-lib/src/run/cache.rs b/crates/turborepo-lib/src/run/cache.rs index f0464afef25f3..bc79b42387736 100644 --- a/crates/turborepo-lib/src/run/cache.rs +++ b/crates/turborepo-lib/src/run/cache.rs @@ -118,7 +118,7 @@ impl RunCache { pub async fn shutdown_cache(&self) { // Ignore errors coming from cache already shutting down - self.cache.shutdown().await.ok(); + let _ = tokio::time::timeout(Duration::from_secs(30), self.cache.shutdown()).await; } } diff --git a/crates/turborepo-lib/src/run/watch.rs b/crates/turborepo-lib/src/run/watch.rs index c82a5c9c8fe46..a0169a53ec193 100644 --- a/crates/turborepo-lib/src/run/watch.rs +++ b/crates/turborepo-lib/src/run/watch.rs @@ -6,11 +6,13 @@ use tokio::{select, task::JoinHandle}; use turborepo_telemetry::events::command::CommandEventBuilder; use crate::{ - cli::{Command, RunArgs}, + cli::{Command, OutputLogsMode, RunArgs}, commands, commands::CommandBase, daemon::{proto, DaemonConnectorError, DaemonError}, - get_version, run, + get_version, + opts::Opts, + run, signal::SignalHandler, Args, DaemonConnector, DaemonPaths, }; @@ -35,8 +37,6 @@ pub enum Error { impl WatchClient { pub async fn start(base: CommandBase, telemetry: CommandEventBuilder) -> Result<(), Error> { - let signal = commands::run::get_signal()?; - let handler = SignalHandler::new(signal); let connector = DaemonConnector { can_start_server: true, can_kill_server: true, @@ -49,6 +49,9 @@ impl WatchClient { let mut current_runs: HashMap>> = HashMap::new(); loop { + let signal = commands::run::get_signal()?; + let handler = SignalHandler::new(signal); + let Some(subscriber) = handler.subscribe() else { tracing::warn!("failed to subscribe to signal handler, shutting down"); break; @@ -94,11 +97,16 @@ impl WatchClient { let args = Args { command: Some(Command::Run(Box::new(RunArgs { tasks: base.args().get_tasks().to_owned(), - filter: vec![package.clone()], + filter: vec![format!("...{}", package)], + output_logs: Some(OutputLogsMode::None), ..Default::default() }))), + ..Args::default() }; + + println!("running `{:#?}`", args); + let new_base = CommandBase::new( args, base.repo_root.clone(), @@ -125,6 +133,7 @@ impl WatchClient { let args = Args { command: Some(Command::Run(Box::new(RunArgs { tasks: base.args().get_tasks().to_owned(), + output_logs: Some(OutputLogsMode::None), ..Default::default() }))), ..Args::default()