This is an automated email from the ASF dual-hosted git repository.

fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit e3fdae69294f121b83eae24749ff091c8852af6d
Author: Gabor Gyimesi <[email protected]>
AuthorDate: Thu Aug 1 17:32:23 2024 +0200

    MINIFICPP-2438 Do not parse json response for acknowledge on C2
    
    Signed-off-by: Ferenc Gerlits <[email protected]>
    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 1f11a0a00..b3bce044f 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 fee4b6327..f1d48ce28 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<const std::byte> 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<const 
char*>(response.data()), response.size());
     if (ok) {
       std::string identifier;

Reply via email to