From e3fdae69294f121b83eae24749ff091c8852af6d Mon Sep 17 00:00:00 2001 From: Gabor Gyimesi Date: Thu, 1 Aug 2024 17:32:23 +0200 Subject: [PATCH] MINIFICPP-2438 Do not parse json response for acknowledge on C2 Signed-off-by: Ferenc Gerlits This closes #1851 --- docker/test/integration/features/minifi_c2_server.feature | 1 + libminifi/src/c2/protocols/RESTProtocol.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docker/test/integration/features/minifi_c2_server.feature b/docker/test/integration/features/minifi_c2_server.feature index 1f11a0a00f..b3bce044f8 100644 --- a/docker/test/integration/features/minifi_c2_server.feature +++ b/docker/test/integration/features/minifi_c2_server.feature @@ -27,6 +27,7 @@ Feature: MiNiFi can communicate with Apache NiFi MiNiFi C2 server When all instances start up Then the MiNiFi C2 server logs contain the following message: "acknowledged with a state of FULLY_APPLIED(DONE)" in less than 30 seconds And a flowfile with the content "test" is placed in the monitored directory in less than 10 seconds + And the Minifi logs do not contain the following message: "Failed to parse json response: The document is empty. at 0" after 0 seconds Scenario: MiNiFi flow config is updated from MiNiFi C2 server through SSL with SSL controller service Given a file with the content "test" is present in "/tmp/input" diff --git a/libminifi/src/c2/protocols/RESTProtocol.cpp b/libminifi/src/c2/protocols/RESTProtocol.cpp index fee4b63275..f1d48ce282 100644 --- a/libminifi/src/c2/protocols/RESTProtocol.cpp +++ b/libminifi/src/c2/protocols/RESTProtocol.cpp @@ -38,9 +38,12 @@ namespace org::apache::nifi::minifi::c2 { C2Payload RESTProtocol::parseJsonResponse(const C2Payload &payload, std::span response) const { - rapidjson::Document root; + if (payload.getOperation() == Operation::acknowledge) { + return {payload.getOperation(), state::UpdateState::READ_COMPLETE}; + } try { + rapidjson::Document root; rapidjson::ParseResult ok = root.Parse(reinterpret_cast(response.data()), response.size()); if (ok) { std::string identifier;