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

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

commit 8360795d6efae2799e11cf262957959ee4a32231
Author: Xadhoodin <[email protected]>
AuthorDate: Wed May 27 20:45:33 2026 +0200

    CAMEL-23627: Fix response error check in SlackProducer
    
    Move the Slack API error response check inside the try block so the 
exception is set
    on the exchange before callback.done(true) fires. Previously the check 
happened after
    the callback, causing onException policies to miss the error. Also fix both 
methods
    to return true since SlackProducer is fully synchronous.
    
    Closes #23567
---
 .../apache/camel/component/slack/SlackProducer.java  | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
 
b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
index 1768f82bb2f7..30112e14f614 100644
--- 
a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
+++ 
b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
@@ -84,6 +84,10 @@ public class SlackProducer extends DefaultAsyncProducer {
                 slackMessage.setText(exchange.getIn().getBody(String.class));
                 response = sendLegacySlackMessage(slackMessage);
             }
+            if (!response.isOk()) {
+                exchange.setException(
+                        new CamelExchangeException("Error POSTing to Slack 
API: " + response, exchange));
+            }
         } catch (Exception e) {
             exchange.setException(e);
             return true;
@@ -91,11 +95,7 @@ public class SlackProducer extends DefaultAsyncProducer {
             callback.done(true);
         }
 
-        if (!response.isOk()) {
-            exchange.setException(new CamelExchangeException("Error POSTing to 
Slack API: " + response.toString(), exchange));
-        }
-
-        return false;
+        return true;
     }
 
     private ChatPostMessageResponse sendLegacySlackMessage(SlackMessage 
slackMessage) throws IOException, SlackApiException {
@@ -134,6 +134,10 @@ public class SlackProducer extends DefaultAsyncProducer {
         WebhookResponse response;
         try {
             response = slack.send(slackEndpoint.getWebhookUrl(), json);
+            if (response.getCode() < 200 || response.getCode() > 299) {
+                exchange.setException(
+                        new CamelExchangeException("Error POSTing to Slack 
API: " + response, exchange));
+            }
         } catch (IOException e) {
             exchange.setException(e);
             return true;
@@ -141,11 +145,7 @@ public class SlackProducer extends DefaultAsyncProducer {
             callback.done(true);
         }
 
-        if (response.getCode() < 200 || response.getCode() > 299) {
-            exchange.setException(new CamelExchangeException("Error POSTing to 
Slack API: " + response.toString(), exchange));
-        }
-
-        return false;
+        return true;
     }
 
     private Message addEndPointOptions(Message slackMessage) {

Reply via email to