From d5854ab736619396f57a80fa5e331eb7aed74f32 Mon Sep 17 00:00:00 2001 From: scottcao <13919256+scottcao@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:47:42 -0700 Subject: [PATCH 1/2] Don't unwrap soft error invocations from materializer Summary: These should not cause panics in OSS. Differential Revision: D100422870 --- .../src/materializers/deferred/artifact_tree.rs | 2 +- .../materializers/deferred/command_processor.rs | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs b/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs index 72d4ce83d54e7..e75511efb5815 100644 --- a/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs +++ b/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs @@ -360,7 +360,7 @@ impl ArtifactTree { } Err(e) => { // NOTE: This shouldn't normally happen? - soft_error!("cleanup_finished_vacant", e, quiet: true).unwrap(); + let _unused = soft_error!("cleanup_finished_vacant", e, quiet: true); } } } diff --git a/app/buck2_execute_impl/src/materializers/deferred/command_processor.rs b/app/buck2_execute_impl/src/materializers/deferred/command_processor.rs index 8d29071814cf7..6319c577d1a21 100644 --- a/app/buck2_execute_impl/src/materializers/deferred/command_processor.rs +++ b/app/buck2_execute_impl/src/materializers/deferred/command_processor.rs @@ -548,12 +548,11 @@ impl DeferredMaterializerCommandProcessor { Some(cmd.create_clean_fut(&mut self, None, daemon_id)); } else { // This should never happen - soft_error!( + let _unused = soft_error!( "clean_stale_no_config", buck2_error!(buck2_error::ErrorTag::Tier0, "clean scheduled without being configured"), quiet: true - ) - .unwrap(); + ); } } } @@ -751,12 +750,11 @@ impl DeferredMaterializerCommandProcessor { .materializer_state_table() .update_access_times(buffer.iter().collect::>()) { - soft_error!( + let _unused = soft_error!( "materializer_materialize_error", e, quiet: true - ) - .unwrap(); + ); return "Found error while updating access times in sqlite db".to_owned(); } } @@ -1021,7 +1019,7 @@ impl DeferredMaterializerCommandProcessor { .materializer_state_table() .update_access_times(vec![&path]) { - soft_error!("has_artifact_update_time", e, quiet: true).unwrap(); + let _unused = soft_error!("has_artifact_update_time", e, quiet: true); } } } @@ -1457,7 +1455,7 @@ fn on_materialization( .materializer_state_table() .insert(path, metadata, timestamp) { - soft_error!(error_name, e, quiet: true).unwrap(); + let _unused = soft_error!(error_name, e, quiet: true); } } From 8890789b7eca690cae47a6b2e9876ff8f7e88548 Mon Sep 17 00:00:00 2001 From: scottcao <13919256+scottcao@users.noreply.github.com> Date: Fri, 10 Apr 2026 17:47:42 -0700 Subject: [PATCH 2/2] Convert unnecessary soft error to debug logging (#1291) Summary: Pull Request resolved: https://github.com/facebook/buck2/pull/1291 It's entirely possible for paths to be re-declared by a subsequent command before cleanup path request gets processed. Not sure why a soft error was added here but it's too broad for detecting bugs in materializer. Differential Revision: D100418271 --- .../src/materializers/deferred/artifact_tree.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs b/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs index e75511efb5815..07d394569b5db 100644 --- a/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs +++ b/app/buck2_execute_impl/src/materializers/deferred/artifact_tree.rs @@ -11,7 +11,6 @@ use std::sync::Arc; use buck2_core::fs::project_rel_path::ProjectRelativePathBuf; -use buck2_core::soft_error; use buck2_directory::directory::directory_ref::DirectoryRef; use buck2_directory::directory::entry::DirectoryEntry; use buck2_error::BuckErrorContext; @@ -359,8 +358,7 @@ impl ArtifactTree { } } Err(e) => { - // NOTE: This shouldn't normally happen? - let _unused = soft_error!("cleanup_finished_vacant", e, quiet: true); + tracing::debug!("cleanup_finished_vacant: {}", e); } } }