This is an automated email from the ASF dual-hosted git repository. szaszm pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit 18380fc7d3bd8328e58d7e4553cc944f4ae5b248 Author: Martin Zink <[email protected]> AuthorDate: Thu Feb 12 17:12:58 2026 +0100 MINIFICPP-2707 Catch exceptions during C2 Start/Stop commands Closes #2093 Signed-off-by: Marton Szasz <[email protected]> --- libminifi/src/c2/C2Agent.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/libminifi/src/c2/C2Agent.cpp b/libminifi/src/c2/C2Agent.cpp index 7f5dc679a..239c86ea7 100644 --- a/libminifi/src/c2/C2Agent.cpp +++ b/libminifi/src/c2/C2Agent.cpp @@ -890,21 +890,27 @@ void C2Agent::handle_start_stop(const C2ContentResponse& resp) { }); }; - if (lowered_response_name == "flow") { - executeStartStopOnComponent("FlowController"); - } else if (lowered_response_name == "processor") { - auto processor_id = resp.getStringArgument("processorId"); - if (processor_id) { - executeStartStopOnComponent(processor_id.value()); + auto update_state = state::UpdateState::FULLY_APPLIED; + try { + if (lowered_response_name == "flow") { + executeStartStopOnComponent("FlowController"); + } else if (lowered_response_name == "processor") { + if (const auto processor_id = resp.getStringArgument("processorId")) { + executeStartStopOnComponent(processor_id.value()); + } else { + update_state = state::UpdateState::NO_OPERATION; + logger_->log_warn("Processor start/stop request missing 'processorId' argument"); + } } else { - logger_->log_warn("Processor start/stop request missing 'processorId' argument"); + executeStartStopOnComponent(resp.name); } - } else { - executeStartStopOnComponent(resp.name); + } catch (const std::exception& err) { + update_state = state::UpdateState::NOT_APPLIED; + logger_->log_warn("Failed to execute StartStopOnComponent command due to \"{}\"", err.what()); } if (!resp.ident.empty()) { - C2Payload response(Operation::acknowledge, resp.ident, true); + C2Payload response(Operation::acknowledge, update_state, resp.ident, true); enqueue_c2_response(std::move(response)); } }
