Skip to content

Commit b1a3a2e

Browse files
chore: Condense output of dfx start/stop (#4084)
1 parent eb9c92a commit b1a3a2e

File tree

9 files changed

+47
-38
lines changed

9 files changed

+47
-38
lines changed

e2e/tests-dfx/start.bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ teardown() {
7979

8080
@test "start and stop outside project" {
8181
assert_command dfx_start
82-
assert_contains "Success! The dfx server is running in the background."
82+
assert_contains "Replica API running in the background"
8383

8484
mkdir subdir
8585
cd subdir || exit 1

src/dfx/src/actors/canister_http_adapter.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use actix::{
1212
};
1313
use anyhow::bail;
1414
use crossbeam::channel::{unbounded, Receiver, Sender};
15-
use slog::{debug, info, Logger};
15+
use slog::{debug, Logger};
1616
use std::path::{Path, PathBuf};
1717
use std::thread::JoinHandle;
1818
use std::time::Duration;
@@ -126,7 +126,7 @@ impl Actor for CanisterHttpAdapter {
126126
}
127127

128128
fn stopping(&mut self, _ctx: &mut Self::Context) -> Running {
129-
info!(self.logger, "Stopping canister http adapter...");
129+
debug!(self.logger, "Stopping canister http adapter...");
130130
if let Some(sender) = self.stop_sender.take() {
131131
let _ = sender.send(());
132132
}
@@ -135,7 +135,7 @@ impl Actor for CanisterHttpAdapter {
135135
let _ = join.join();
136136
}
137137

138-
info!(self.logger, "Stopped.");
138+
debug!(self.logger, "Stopped.");
139139
Running::Stop
140140
}
141141
}

src/dfx/src/actors/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::actors::replica::{BitcoinIntegrationConfig, Replica};
66
use crate::actors::shutdown_controller::ShutdownController;
77
use crate::lib::environment::Environment;
88
use crate::lib::error::DfxResult;
9+
use crate::lib::progress_bar::ProgressBar;
910
use actix::{Actor, Addr, Recipient};
1011
use anyhow::Context;
1112
use dfx_core::config::model::local_server_descriptor::LocalServerDescriptor;
@@ -233,11 +234,12 @@ pub fn start_post_start_actor(
233234
env: &dyn Environment,
234235
background: bool,
235236
pocketic_proxy: Option<Addr<PocketIcProxy>>,
237+
spinner: ProgressBar,
236238
) -> DfxResult<Addr<PostStart>> {
237239
let config = post_start::Config {
238240
logger: env.get_logger().clone(),
239241
background,
240242
pocketic_proxy,
241243
};
242-
Ok(PostStart::new(config).start())
244+
Ok(PostStart::new(config, spinner).start())
243245
}

src/dfx/src/actors/pocketic.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use dfx_core::config::model::replica_config::CachedConfig;
2424
use dfx_core::config::model::replica_config::ReplicaConfig;
2525
#[cfg(unix)]
2626
use dfx_core::json::save_json_file;
27-
use slog::{debug, error, info, warn, Logger};
27+
use slog::{debug, error, warn, Logger};
2828
use std::net::SocketAddr;
2929
use std::ops::ControlFlow::{self, *};
3030
use std::path::{Path, PathBuf};
@@ -159,7 +159,7 @@ impl Actor for PocketIc {
159159
}
160160

161161
fn stopping(&mut self, _ctx: &mut Self::Context) -> Running {
162-
info!(self.logger, "Stopping PocketIC...");
162+
warn!(self.logger, "Stopping PocketIC...");
163163
if let Some(sender) = self.stop_sender.take() {
164164
let _ = sender.send(());
165165
}
@@ -168,7 +168,7 @@ impl Actor for PocketIc {
168168
let _ = join.join();
169169
}
170170

171-
info!(self.logger, "Stopped.");
171+
warn!(self.logger, "Stopped.");
172172
Running::Stop
173173
}
174174
}
@@ -435,7 +435,7 @@ async fn initialize_pocketic(
435435
initialize_bitcoin_canister(&agent, &logger, bitcoin_integration_config.clone()).await?;
436436
}
437437

438-
info!(logger, "Initialized PocketIC.");
438+
debug!(logger, "Initialized PocketIC.");
439439
Ok(instance)
440440
}
441441

src/dfx/src/actors/pocketic_proxy.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use actix::{
1111
};
1212
use anyhow::{anyhow, bail};
1313
use crossbeam::channel::{unbounded, Receiver, Sender};
14-
use slog::{debug, error, info, Logger};
14+
use slog::{debug, error, Logger};
1515
use std::net::SocketAddr;
1616
use std::ops::ControlFlow::{self, *};
1717
use std::path::{Path, PathBuf};
@@ -120,15 +120,15 @@ impl PocketIcProxy {
120120

121121
fn stop_pocketic_proxy(&mut self) {
122122
if self.stop_sender.is_some() || self.thread_join.is_some() {
123-
info!(self.logger, "Stopping HTTP gateway...");
123+
debug!(self.logger, "Stopping HTTP gateway...");
124124
if let Some(sender) = self.stop_sender.take() {
125125
let _ = sender.send(());
126126
}
127127

128128
if let Some(join) = self.thread_join.take() {
129129
let _ = join.join();
130130
}
131-
info!(self.logger, "Stopped.");
131+
debug!(self.logger, "Stopped.");
132132
}
133133
}
134134

@@ -211,9 +211,9 @@ impl Handler<PocketIcProxyReadySubscribe> for PocketIcProxy {
211211
impl Handler<PocketIcProxyReadySignal> for PocketIcProxy {
212212
type Result = ();
213213

214-
fn handle(&mut self, _msg: PocketIcProxyReadySignal, _ctx: &mut Self::Context) {
214+
fn handle(&mut self, msg: PocketIcProxyReadySignal, _ctx: &mut Self::Context) {
215215
for sub in &self.ready_subscribers {
216-
sub.do_send(PocketIcProxyReadySignal);
216+
sub.do_send(msg);
217217
}
218218
}
219219
}
@@ -309,10 +309,9 @@ fn pocketic_proxy_start_thread(
309309
}
310310
Ok(i) => i,
311311
};
312-
info!(logger, "Replica API running on {address}");
313312

314313
// Send PocketIcProxyReadySignal to PocketIcProxy.
315-
addr.do_send(PocketIcProxyReadySignal);
314+
addr.do_send(PocketIcProxyReadySignal(address));
316315

317316
// This waits for the child to stop, or the receiver to receive a message.
318317
// We don't restart pocket-ic if done = true.
@@ -384,7 +383,7 @@ async fn initialize_gateway(
384383
CreateHttpGatewayResponse::Created(info) => info.instance_id,
385384
CreateHttpGatewayResponse::Error { message } => bail!("Gateway init error: {message}"),
386385
};
387-
info!(logger, "Initialized HTTP gateway.");
386+
debug!(logger, "Initialized HTTP gateway.");
388387
Ok(instance)
389388
}
390389

src/dfx/src/actors/post_start.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
use crate::actors::pocketic_proxy::PocketIcProxy;
22
use crate::actors::post_start::signals::{PocketIcProxyReadySignal, PocketIcProxyReadySubscribe};
3+
use crate::lib::progress_bar::ProgressBar;
34
use actix::{Actor, Addr, AsyncContext, Context, Handler};
45
use slog::{info, Logger};
56

67
pub mod signals {
8+
use std::net::SocketAddr;
9+
710
use actix::prelude::*;
811

9-
#[derive(Message)]
12+
#[derive(Message, Copy, Clone)]
1013
#[rtype(result = "()")]
11-
pub struct PocketIcProxyReadySignal;
14+
pub struct PocketIcProxyReadySignal(pub SocketAddr);
1215

1316
#[derive(Message)]
1417
#[rtype(result = "()")]
@@ -23,11 +26,12 @@ pub struct Config {
2326

2427
pub struct PostStart {
2528
config: Config,
29+
spinner: ProgressBar,
2630
}
2731

2832
impl PostStart {
29-
pub fn new(config: Config) -> Self {
30-
Self { config }
33+
pub fn new(config: Config, spinner: ProgressBar) -> Self {
34+
Self { config, spinner }
3135
}
3236
}
3337

@@ -45,17 +49,16 @@ impl Actor for PostStart {
4549
impl Handler<PocketIcProxyReadySignal> for PostStart {
4650
type Result = ();
4751

48-
fn handle(&mut self, _msg: PocketIcProxyReadySignal, _ctx: &mut Self::Context) -> Self::Result {
52+
fn handle(&mut self, msg: PocketIcProxyReadySignal, _ctx: &mut Self::Context) -> Self::Result {
4953
let logger = &self.config.logger;
54+
let address = msg.0;
55+
self.spinner.finish_and_clear();
5056
if self.config.background {
51-
info!(
52-
logger,
53-
"Success! The dfx server is running in the background."
54-
)
57+
info!(logger, "Replica API running in the background on {address}");
5558
} else {
5659
info!(
5760
logger,
58-
"Success! The dfx server is running.\nYou must open a new terminal to continue developing. If you'd prefer to stop, quit with 'Ctrl-C'."
61+
"Replica API running on {address}. You must open a new terminal to continue developing. If you'd prefer to stop, quit with 'Ctrl-C'."
5962
)
6063
}
6164
}

src/dfx/src/actors/replica.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use actix::{
1818
use anyhow::bail;
1919
use crossbeam::channel::{unbounded, Receiver, Sender};
2020
use dfx_core::config::model::replica_config::ReplicaConfig;
21-
use slog::{debug, error, info, Logger};
21+
use slog::{debug, error, Logger};
2222
use std::path::{Path, PathBuf};
2323
use std::thread::JoinHandle;
2424
use std::time::Duration;
@@ -220,10 +220,10 @@ impl Actor for Replica {
220220
}
221221

222222
fn stopping(&mut self, _ctx: &mut Self::Context) -> Running {
223-
info!(self.logger, "Stopping the replica...");
223+
debug!(self.logger, "Stopping the replica...");
224224
self.stop_replica();
225225

226-
info!(self.logger, "Stopped.");
226+
debug!(self.logger, "Stopped.");
227227
Running::Stop
228228
}
229229
}
@@ -466,7 +466,7 @@ async fn initialize_replica(
466466
initialize_bitcoin_canister(&agent, &logger, bitcoin_integration_config).await?;
467467
}
468468

469-
info!(logger, "Initialized replica.");
469+
debug!(logger, "Initialized replica.");
470470

471471
Ok(())
472472
}

src/dfx/src/actors/shutdown_controller.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::actors::shutdown_controller::signals::outbound::Shutdown;
22
use crate::actors::shutdown_controller::signals::ShutdownTrigger;
33
use actix::{Actor, Addr, AsyncContext, Context, Handler, Recipient};
4-
use slog::Logger;
4+
use slog::{info, Logger};
55
use std::time::Duration;
66

77
pub mod signals {
@@ -29,7 +29,7 @@ pub struct Config {
2929
}
3030

3131
pub struct ShutdownController {
32-
_logger: Logger,
32+
logger: Logger,
3333

3434
shutdown_subscribers: Vec<Recipient<signals::outbound::Shutdown>>,
3535
}
@@ -39,7 +39,7 @@ impl ShutdownController {
3939
let logger =
4040
(config.logger.clone()).unwrap_or_else(|| Logger::root(slog::Discard, slog::o!()));
4141
ShutdownController {
42-
_logger: logger,
42+
logger,
4343
shutdown_subscribers: Vec::new(),
4444
}
4545
}
@@ -56,10 +56,12 @@ impl ShutdownController {
5656
.map(|recipient| recipient.send(Shutdown {}))
5757
.map(|response| response.then(|_| future::ok::<(), ()>(())))
5858
.collect();
59+
let subscribers = self.shutdown_subscribers.clone();
60+
let logger = self.logger.clone();
5961

6062
futures::future::join_all(futures)
6163
.into_actor(self)
62-
.then(|_, _, ctx| {
64+
.then(move |_, _, ctx| {
6365
// Once all shutdowns have completed, we can schedule a stop of the actix system. It is
6466
// performed with a slight delay to give pending synced futures a chance to perform their
6567
// error handlers.
@@ -69,7 +71,10 @@ impl ShutdownController {
6971
// be able to print error messages.
7072
let when = Duration::from_secs(0) + Duration::from_millis(100);
7173

72-
ctx.run_later(when, |_, _| {
74+
ctx.run_later(when, move |_, _| {
75+
if !subscribers.iter().any(|s| s.connected()) {
76+
info!(logger, "All local network processes stopped");
77+
}
7378
System::current().stop();
7479
});
7580

src/dfx/src/commands/start.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ pub fn exec(
360360
save_json_file(&previous_config_path, &effective_config)?;
361361

362362
let network_descriptor = network_descriptor.clone();
363-
363+
let spinner = env.new_spinner("Starting local network...".into());
364364
let system = actix::System::new();
365365
let _proxy = system.block_on(async move {
366366
let shutdown_controller = start_shutdown_controller(env)?;
@@ -425,7 +425,7 @@ pub fn exec(
425425
pocketic_proxy_port_file_path,
426426
)?;
427427

428-
let post_start = start_post_start_actor(env, running_in_background, Some(proxy))?;
428+
let post_start = start_post_start_actor(env, running_in_background, Some(proxy), spinner)?;
429429

430430
Ok::<_, Error>(post_start)
431431
})?;

0 commit comments

Comments
 (0)