Skip to content

Commit ef3d659

Browse files
Rajneesh Lakkundifacebook-github-bot
Rajneesh Lakkundi
authored andcommitted
Control enabling of health checks
Summary: Enable health check subscriber only when enabled via config Reviewed By: JakobDegen Differential Revision: D73031752 fbshipit-source-id: 9caf6ea1c307cbcd9a114f3a1c8e63ea6307e68c
1 parent ca5f4ef commit ef3d659

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

app/buck2_client_ctx/src/streaming.rs

+26-11
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ use crate::signal_handler::with_simple_sigint_handler;
3636
use crate::subscribers::build_graph_stats::BuildGraphStats;
3737
use crate::subscribers::build_id_writer::BuildIdWriter;
3838
use crate::subscribers::event_log::EventLog;
39+
use crate::subscribers::health_check_subscriber::HealthCheckSubscriber;
3940
use crate::subscribers::re_log::ReLog;
4041
use crate::subscribers::recorder::try_get_invocation_recorder;
4142
use crate::subscribers::subscriber::EventSubscriber;
4243
use crate::subscribers::subscribers::EventSubscribers;
4344

4445
const HEALTH_CHECK_CHANNEL_SIZE: usize = 100;
46+
4547
fn default_subscribers<T: StreamingCommand>(
4648
cmd: &T,
4749
matches: BuckArgMatches<'_>,
@@ -55,10 +57,24 @@ fn default_subscribers<T: StreamingCommand>(
5557
// and log it in another (invocation_recorder)
5658
let log_size_counter_bytes = Some(Arc::new(AtomicU64::new(0)));
5759

58-
let (_health_check_tags_sender, health_check_tags_receiver) =
59-
tokio::sync::mpsc::channel(HEALTH_CHECK_CHANNEL_SIZE);
60-
let (_health_check_display_reports_sender, health_check_display_reports_receiver) =
61-
tokio::sync::mpsc::channel(HEALTH_CHECK_CHANNEL_SIZE);
60+
let enable_health_checks = ctx
61+
.immediate_config
62+
.daemon_startup_config()?
63+
.health_check_config
64+
.enable_health_checks;
65+
66+
let (
67+
health_check_tags_receiver,
68+
health_check_display_reports_receiver,
69+
health_check_subscriber,
70+
) = if enable_health_checks {
71+
let (tag_tx, tag_rx) = tokio::sync::mpsc::channel(HEALTH_CHECK_CHANNEL_SIZE);
72+
let (report_tx, report_rx) = tokio::sync::mpsc::channel(HEALTH_CHECK_CHANNEL_SIZE);
73+
let subscriber = HealthCheckSubscriber::new(tag_tx, report_tx);
74+
(Some(tag_rx), Some(report_rx), Some(subscriber))
75+
} else {
76+
(None, None, None)
77+
};
6278

6379
subscribers.push(get_console_with_root(
6480
ctx.trace_id.dupe(),
@@ -68,7 +84,7 @@ fn default_subscribers<T: StreamingCommand>(
6884
None,
6985
T::COMMAND_NAME,
7086
console_opts.superconsole_config(),
71-
Some(health_check_display_reports_receiver),
87+
health_check_display_reports_receiver,
7288
)?);
7389

7490
if let Some(event_log) = try_get_event_log_subscriber(cmd, ctx, log_size_counter_bytes.clone())?
@@ -96,16 +112,15 @@ fn default_subscribers<T: StreamingCommand>(
96112
cmd.sanitize_argv(ctx.argv.clone()).argv,
97113
representative_config_flags,
98114
log_size_counter_bytes,
99-
Some(health_check_tags_receiver),
115+
health_check_tags_receiver,
100116
)?;
101117
recorder.update_metadata_from_client_metadata(&ctx.client_metadata);
102118
subscribers.push(recorder);
103119

104-
// TODO(rajneeshl): Enable this after we have a cleaner kill switch for health checks.
105-
// subscribers.push(HealthCheckSubscriber::new(
106-
// health_check_tags_sender,
107-
// health_check_display_reports_sender,
108-
// ));
120+
if let Some(subscriber) = health_check_subscriber {
121+
subscribers.push(subscriber);
122+
}
123+
109124
subscribers.extend(cmd.extra_subscribers());
110125
Ok(EventSubscribers::new(subscribers))
111126
}

0 commit comments

Comments
 (0)