From f00d01ec2d71ca0f0f1d2a29ef5f983c9f05970f Mon Sep 17 00:00:00 2001 From: simon-escapecode <148354978+simon-escapecode@users.noreply.github.com> Date: Wed, 11 Mar 2026 02:08:30 +0000 Subject: [PATCH] fix: resolve silent failure in MQTT bucket event notifications (#2112) Co-authored-by: houseme --- crates/notify/src/registry.rs | 15 +++++++++++---- rustfs/src/server/event.rs | 23 +---------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/crates/notify/src/registry.rs b/crates/notify/src/registry.rs index 4d727416..68462f52 100644 --- a/crates/notify/src/registry.rs +++ b/crates/notify/src/registry.rs @@ -293,10 +293,17 @@ impl TargetRegistry { } } - let Some(store) = rustfs_ecstore::global::new_object_layer_fn() else { - return Err(TargetError::ServerNotInitialized( - "Failed to save target configuration: server storage not initialized".to_string(), - )); + let store = match rustfs_ecstore::global::new_object_layer_fn() { + Some(s) => s, + None => { + warn!( + "Object store not available at notification init; skipping config persistence. \ + {} target(s) active in memory.", + successful_targets.len() + ); + info!(count = successful_targets.len(), "All target processing completed"); + return Ok(successful_targets); + } }; match rustfs_ecstore::config::com::save_server_config(store, &new_config).await { diff --git a/rustfs/src/server/event.rs b/rustfs/src/server/event.rs index 85b8573c..9fee1d1e 100644 --- a/rustfs/src/server/event.rs +++ b/rustfs/src/server/event.rs @@ -13,7 +13,6 @@ // limitations under the License. use crate::app::context::resolve_server_config; -use rustfs_config::DEFAULT_DELIMITER; use tracing::{error, info, instrument, warn}; fn server_config_from_context() -> Option { @@ -58,32 +57,12 @@ pub(crate) async fn init_event_notifier() { } }; - info!( - target: "rustfs::main::init_event_notifier", - "Global server configuration loaded successfully" - ); - // 2. Check if at least one notify subsystem exists in the configuration, and skip only when neither is present. - let mqtt_configured = server_config - .get_value(rustfs_config::notify::NOTIFY_MQTT_SUB_SYS, DEFAULT_DELIMITER) - .is_some(); - let webhook_configured = server_config - .get_value(rustfs_config::notify::NOTIFY_WEBHOOK_SUB_SYS, DEFAULT_DELIMITER) - .is_some(); - - if !mqtt_configured && !webhook_configured { - info!( - target: "rustfs::main::init_event_notifier", - "'notify' subsystem not configured, skipping event notifier initialization." - ); - return; - } - info!( target: "rustfs::main::init_event_notifier", "Event notifier configuration found, proceeding with initialization." ); - // 3. Initialize the notification system asynchronously with a global configuration + // 2. Initialize the notification system asynchronously with a global configuration // Use direct await for better error handling and faster initialization if let Err(e) = rustfs_notify::initialize(server_config).await { error!("Failed to initialize event notifier system: {}", e);