From 9739de26b25a128458baf42bc3f75748c5520e2e Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Mon, 1 Jun 2026 12:25:35 -0700 Subject: [PATCH 1/2] Use FlushWriter to ensure traces are flushed --- dsc/src/util.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/dsc/src/util.rs b/dsc/src/util.rs index 9a4870ff5..4f17bb940 100644 --- a/dsc/src/util.rs +++ b/dsc/src/util.rs @@ -325,6 +325,33 @@ pub fn write_object(json: &str, format: Option<&OutputFormat>, include_separator } } +struct FlushWriter(W); + +impl Write for FlushWriter { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + let n = self.0.write(buf)?; + let _ = self.0.flush(); + Ok(n) + } + + fn flush(&mut self) -> std::io::Result<()> { + self.0.flush() + } +} + +struct MakeFlushWriter(M); + +impl<'a, M> tracing_subscriber::fmt::MakeWriter<'a> for MakeFlushWriter +where + M: tracing_subscriber::fmt::MakeWriter<'a>, +{ + type Writer = FlushWriter; + + fn make_writer(&'a self) -> Self::Writer { + FlushWriter(self.0.make_writer()) + } +} + #[allow(clippy::too_many_lines)] pub fn enable_tracing(trace_level_arg: Option<&TraceLevel>, trace_format_arg: Option<&TraceFormat>) { @@ -336,7 +363,7 @@ pub fn enable_tracing(trace_level_arg: Option<&TraceLevel>, trace_format_arg: Op .unwrap_or_default() .add_directive(Level::WARN.into()); let default_indicatif_layer = IndicatifLayer::new(); - let default_layer = tracing_subscriber::fmt::Layer::default().with_writer(default_indicatif_layer.get_stderr_writer()); + let default_layer = tracing_subscriber::fmt::Layer::default().with_writer(MakeFlushWriter(default_indicatif_layer.get_stderr_writer())); let default_fmt = default_layer .with_ansi(true) .with_level(true) @@ -406,7 +433,7 @@ pub fn enable_tracing(trace_level_arg: Option<&TraceLevel>, trace_format_arg: Op .unwrap_or_default() .add_directive(tracing_level.into()); let indicatif_layer = IndicatifLayer::new(); - let layer = tracing_subscriber::fmt::Layer::default().with_writer(indicatif_layer.get_stderr_writer()); + let layer = tracing_subscriber::fmt::Layer::default().with_writer(MakeFlushWriter(indicatif_layer.get_stderr_writer())); let with_source = tracing_level == Level::DEBUG || tracing_level == Level::TRACE; let fmt = match tracing_setting.format { TraceFormat::Default => { From d0e9285e08c67f034b76951a8e278f12dee016c4 Mon Sep 17 00:00:00 2001 From: Steve Lee Date: Mon, 1 Jun 2026 12:39:51 -0700 Subject: [PATCH 2/2] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- dsc/src/util.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dsc/src/util.rs b/dsc/src/util.rs index 4f17bb940..e31758d53 100644 --- a/dsc/src/util.rs +++ b/dsc/src/util.rs @@ -330,10 +330,15 @@ struct FlushWriter(W); impl Write for FlushWriter { fn write(&mut self, buf: &[u8]) -> std::io::Result { let n = self.0.write(buf)?; - let _ = self.0.flush(); + self.0.flush()?; Ok(n) } + fn write_all(&mut self, buf: &[u8]) -> std::io::Result<()> { + self.0.write_all(buf)?; + self.0.flush() + } + fn flush(&mut self) -> std::io::Result<()> { self.0.flush() }