This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 421206d2500 CAMEL-19060: move the isFailureHandled logic to a field in
the ExchangeExtension to avoid costly operations
421206d2500 is described below
commit 421206d2500c06807b7791ff894827bf1863393c
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Thu Feb 9 17:55:26 2023 +0100
CAMEL-19060: move the isFailureHandled logic to a field in the
ExchangeExtension to avoid costly operations
---
core/camel-api/src/main/java/org/apache/camel/Exchange.java | 1 +
.../src/main/java/org/apache/camel/ExchangeExtension.java | 4 ++++
.../src/main/java/org/apache/camel/ExchangePropertyKey.java | 2 --
.../java/org/apache/camel/processor/OnCompletionProcessor.java | 6 +++---
.../aggregate/ShareUnitOfWorkAggregationStrategy.java | 5 +----
.../camel/processor/errorhandler/RedeliveryErrorHandler.java | 2 +-
.../main/java/org/apache/camel/support/AbstractExchange.java | 1 +
.../src/main/java/org/apache/camel/support/ExchangeHelper.java | 5 +++--
.../org/apache/camel/support/ExtendedExchangeExtension.java | 10 ++++++++++
.../modules/ROOT/pages/camel-4-migration-guide.adoc | 2 ++
10 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
index 782f50749e8..2f69e1adc25 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java
@@ -123,6 +123,7 @@ public interface Exchange {
@Deprecated
String EXTERNAL_REDELIVERED = "CamelExternalRedelivered";
+ @Deprecated
String FAILURE_HANDLED = "CamelFailureHandled";
String FAILURE_ENDPOINT = "CamelFailureEndpoint";
String FAILURE_ROUTE_ID = "CamelFailureRouteId";
diff --git
a/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
b/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
index 9443b435b37..9ce5fa7a014 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExchangeExtension.java
@@ -240,4 +240,8 @@ public interface ExchangeExtension {
* This is only used when pooled exchange is enabled for optimization and
reducing object allocations.
*/
void setDefaultConsumerCallback(AsyncCallback callback);
+
+ boolean isFailureHandled();
+
+ void setFailureHandled(boolean failureHandled);
}
diff --git
a/core/camel-api/src/main/java/org/apache/camel/ExchangePropertyKey.java
b/core/camel-api/src/main/java/org/apache/camel/ExchangePropertyKey.java
index f254840d4f2..58b7ca6c215 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExchangePropertyKey.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExchangePropertyKey.java
@@ -137,8 +137,6 @@ public enum ExchangePropertyKey {
return EXCEPTION_HANDLED;
case Exchange.FAILURE_ENDPOINT:
return FAILURE_ENDPOINT;
- case Exchange.FAILURE_HANDLED:
- return FAILURE_HANDLED;
case Exchange.FAILURE_ROUTE_ID:
return FAILURE_ROUTE_ID;
case Exchange.FATAL_FALLBACK_ERROR_HANDLER:
diff --git
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
index b4b2cf3265c..fbd69fd9dc5 100644
---
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
+++
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
@@ -167,7 +167,7 @@ public class OnCompletionProcessor extends
AsyncProcessorSupport implements Trac
// but keep the caused exception stored as a property
(Exchange.EXCEPTION_CAUGHT) on the exchange
boolean stop = exchange.isRouteStop();
exchange.setRouteStop(false);
- Object failureHandled =
exchange.removeProperty(ExchangePropertyKey.FAILURE_HANDLED);
+ boolean failureHandled =
exchange.getExchangeExtension().isFailureHandled();
Boolean errorhandlerHandled =
exchange.getExchangeExtension().getErrorHandlerHandled();
exchange.getExchangeExtension().setErrorHandlerHandled(null);
boolean rollbackOnly = exchange.isRollbackOnly();
@@ -190,8 +190,8 @@ public class OnCompletionProcessor extends
AsyncProcessorSupport implements Trac
} finally {
// restore the options
exchange.setRouteStop(stop);
- if (failureHandled != null) {
- exchange.setProperty(ExchangePropertyKey.FAILURE_HANDLED,
failureHandled);
+ if (failureHandled) {
+ exchange.getExchangeExtension().setFailureHandled(true);
}
if (errorhandlerHandled != null) {
exchange.getExchangeExtension().setErrorHandlerHandled(errorhandlerHandled);
diff --git
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
index 889184749c7..159276059a0 100644
---
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
+++
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java
@@ -130,10 +130,7 @@ public final class ShareUnitOfWorkAggregationStrategy
extends ServiceSupport imp
answer.getExchangeExtension()
.setErrorHandlerHandled(newExchange.getExchangeExtension().getErrorHandlerHandled());
}
- if (newExchange.getProperty(ExchangePropertyKey.FAILURE_HANDLED)
!= null) {
- answer.setProperty(ExchangePropertyKey.FAILURE_HANDLED,
-
newExchange.getProperty(ExchangePropertyKey.FAILURE_HANDLED));
- }
+
answer.getExchangeExtension().setFailureHandled(newExchange.getExchangeExtension().isFailureHandled());
}
}
diff --git
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 4ed9a2619d5..fee692a4e49 100644
---
a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++
b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -916,7 +916,7 @@ public abstract class RedeliveryErrorHandler extends
ErrorHandlerSupport
exchange.getIn().removeHeader(Exchange.REDELIVERED);
exchange.getIn().removeHeader(Exchange.REDELIVERY_COUNTER);
exchange.getIn().removeHeader(Exchange.REDELIVERY_MAX_COUNTER);
- exchange.removeProperty(ExchangePropertyKey.FAILURE_HANDLED);
+ exchange.getExchangeExtension().setFailureHandled(false);
// keep the Exchange.EXCEPTION_CAUGHT as property so end user
knows the caused exception
// create log message
diff --git
a/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
b/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
index bce2e574cf7..d58b059ac36 100644
---
a/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/AbstractExchange.java
@@ -84,6 +84,7 @@ class AbstractExchange implements Exchange {
boolean interruptable = true;
boolean redeliveryExhausted;
boolean streamCacheDisabled;
+ boolean failureHandled;
Boolean errorHandlerHandled;
AsyncCallback defaultConsumerCallback; // optimize (do not reset)
Map<String, SafeCopyProperty> safeCopyProperties;
diff --git
a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
index 76d51a01e2c..6c6e28fd084 100644
---
a/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/ExchangeHelper.java
@@ -574,7 +574,8 @@ public final class ExchangeHelper {
* @return <tt>true</tt> if failure handled, <tt>false</tt>
otherwise
*/
public static boolean isFailureHandled(Exchange exchange) {
- return exchange.getProperty(ExchangePropertyKey.FAILURE_HANDLED,
false, Boolean.class);
+ return exchange.getExchangeExtension().isFailureHandled();
+// return exchange.getProperty(ExchangePropertyKey.FAILURE_HANDLED,
false, Boolean.class);
}
/**
@@ -603,9 +604,9 @@ public final class ExchangeHelper {
* @param exchange the exchange
*/
public static void setFailureHandled(Exchange exchange) {
- exchange.setProperty(ExchangePropertyKey.FAILURE_HANDLED,
Boolean.TRUE);
// clear exception since its failure handled
exchange.setException(null);
+ exchange.getExchangeExtension().setFailureHandled(true);
}
/**
diff --git
a/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
b/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
index 318bac4902e..2b1d8946748 100644
---
a/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
+++
b/core/camel-support/src/main/java/org/apache/camel/support/ExtendedExchangeExtension.java
@@ -213,4 +213,14 @@ public class ExtendedExchangeExtension implements
ExchangeExtension {
public <T> T getSafeCopyProperty(String key, Class<T> type) {
return this.exchange.getSafeCopyProperty(key, type);
}
+
+ @Override
+ public boolean isFailureHandled() {
+ return this.exchange.failureHandled;
+ }
+
+ @Override
+ public void setFailureHandled(boolean failureHandled) {
+ this.exchange.failureHandled = failureHandled;
+ }
}
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
index fef6c0057cd..39af3cb1dde 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4-migration-guide.adoc
@@ -76,6 +76,8 @@ We have removed deprecated APIs such as the following:
-- Replaced `adapt()` from `org.apache.camel.CamelContext` with
`getCamelContextExtension`
- Decoupled the `org.apache.camel.ExtendedExchange` from the
`org.apache.camel.Exchange`.
-- Replaced `adapt()` from `org.apache.camel.ExtendedExchange` with
`getExchangeExtension`
+- Exchange failure handling status has moved from being a property defined as
`ExchangePropertyKey.FAILURE_HANDLED` to a member of the ExtendedExchange,
accessible via `isFailureHandled()`method.
+
== EIP Changes