You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/03/18 10:44:47 UTC

(camel) branch camel-4.0.x updated: CAMEL-20555: adding check for status code when creating a new saga (#13515)

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

davsclaus pushed a commit to branch camel-4.0.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.0.x by this push:
     new 0f5e66c0e9c CAMEL-20555: adding check for status code when creating a new saga (#13515)
0f5e66c0e9c is described below

commit 0f5e66c0e9c825f2636fa910ff35b4c667a9141e
Author: Johannes Boßle <jo...@knowis.de>
AuthorDate: Mon Mar 18 11:24:35 2024 +0100

    CAMEL-20555: adding check for status code when creating a new saga (#13515)
    
    * adding check of status code
    
    * adding check of status code
    
    ---------
    
    Co-authored-by: Johannes Boßle <jb...@knowis.de>
---
 .../src/main/java/org/apache/camel/service/lra/LRAClient.java  | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/components/camel-lra/src/main/java/org/apache/camel/service/lra/LRAClient.java b/components/camel-lra/src/main/java/org/apache/camel/service/lra/LRAClient.java
index 77833c16264..80fc621f972 100644
--- a/components/camel-lra/src/main/java/org/apache/camel/service/lra/LRAClient.java
+++ b/components/camel-lra/src/main/java/org/apache/camel/service/lra/LRAClient.java
@@ -31,6 +31,8 @@ import java.util.function.Function;
 import org.apache.camel.Exchange;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.service.lra.LRAConstants.COORDINATOR_PATH_CANCEL;
 import static org.apache.camel.service.lra.LRAConstants.COORDINATOR_PATH_CLOSE;
@@ -46,6 +48,8 @@ public class LRAClient implements Closeable {
     private final HttpClient client;
     private final String lraUrl;
 
+    private static final Logger LOG = LoggerFactory.getLogger(LRAClient.class);
+
     public LRAClient(LRASagaService sagaService) {
         this(sagaService, HttpClient.newHttpClient());
     }
@@ -72,6 +76,12 @@ public class LRAClient implements Closeable {
         CompletableFuture<HttpResponse<String>> future = client.sendAsync(request, HttpResponse.BodyHandlers.ofString());
 
         return future.thenApply(res -> {
+            if (res.statusCode() >= HttpURLConnection.HTTP_BAD_REQUEST) {
+                LOG.debug("LRA coordinator responded with error code {}. Message: {}", res.statusCode(), res.body());
+                throw new IllegalStateException(
+                        "Cannot obtain LRA id from LRA coordinator due to response status code " + res.statusCode());
+            }
+
             // See if there's a location header containing the LRA URL
             List<String> location = res.headers().map().get("Location");
             if (ObjectHelper.isNotEmpty(location)) {