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 2010/02/01 15:44:08 UTC
svn commit: r905291 - in
/camel/trunk/camel-core/src/main/java/org/apache/camel:
builder/DefaultErrorHandlerBuilder.java
processor/RedeliveryErrorHandler.java processor/RedeliveryPolicy.java
Author: davsclaus
Date: Mon Feb 1 14:44:07 2010
New Revision: 905291
URL: http://svn.apache.org/viewvc?rev=905291&view=rev
Log:
CAMEL-2435: Error handler will now by default log stacktrace for exhausted exchanges which can help see the problem in case caller will swallow the exception etc.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=905291&r1=905290&r2=905291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java Mon Feb 1 14:44:07 2010
@@ -126,6 +126,11 @@
return this;
}
+ public DefaultErrorHandlerBuilder logRetryStackTrace(boolean logRetryStackTrace) {
+ getRedeliveryPolicy().setLogRetryStackTrace(logRetryStackTrace);
+ return this;
+ }
+
/**
* Sets whether the exchange should be marked as handled or not.
*
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=905291&r1=905290&r2=905291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Mon Feb 1 14:44:07 2010
@@ -391,11 +391,18 @@
}
LoggingLevel newLogLevel;
+ boolean logStrackTrace;
if (shouldRedeliver) {
newLogLevel = data.currentRedeliveryPolicy.getRetryAttemptedLogLevel();
+ logStrackTrace = data.currentRedeliveryPolicy.isLogRetryStackTrace();
} else {
newLogLevel = data.currentRedeliveryPolicy.getRetriesExhaustedLogLevel();
+ logStrackTrace = data.currentRedeliveryPolicy.isLogStackTrace();
}
+ if (e == null) {
+ e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
+ }
+
if (exchange.isRollbackOnly()) {
String msg = "Rollback exchange";
if (exchange.getException() != null) {
@@ -408,7 +415,7 @@
// otherwise use the desired logging level
logger.log(msg, newLogLevel);
}
- } else if (data.currentRedeliveryPolicy.isLogStackTrace() && e != null) {
+ } else if (e != null && logStrackTrace) {
logger.log(message, e, newLogLevel);
} else {
logger.log(message, newLogLevel);
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java?rev=905291&r1=905290&r2=905291&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java Mon Feb 1 14:44:07 2010
@@ -45,7 +45,8 @@
* <li>useCollisionAvoidance = false</li>
* <li>retriesExhaustedLogLevel = LoggingLevel.ERROR</li>
* <li>retryAttemptedLogLevel = LoggingLevel.DEBUG</li>
- * <li>logStrackTrace = false</li>
+ * <li>logRetryStackTrace = false</li>
+ * <li>logStackTrace = true</li>
* </ul>
* <p/>
* Setting the maximumRedeliveries to a negative value such as -1 will then always redeliver (unlimited).
@@ -85,7 +86,8 @@
protected boolean useCollisionAvoidance;
protected LoggingLevel retriesExhaustedLogLevel = LoggingLevel.ERROR;
protected LoggingLevel retryAttemptedLogLevel = LoggingLevel.DEBUG;
- protected boolean logStackTrace;
+ protected boolean logStackTrace = true;
+ protected boolean logRetryStackTrace;
protected String delayPattern;
public RedeliveryPolicy() {
@@ -98,7 +100,8 @@
+ ", maximumRedeliveryDelay=" + maximumRedeliveryDelay
+ ", retriesExhaustedLogLevel=" + retriesExhaustedLogLevel
+ ", retryAttemptedLogLevel=" + retryAttemptedLogLevel
- + ", logTraceStace=" + logStackTrace
+ + ", logStackTrace=" + logStackTrace
+ + ", logRetryStackTrace=" + logRetryStackTrace
+ ", useExponentialBackOff=" + useExponentialBackOff
+ ", backOffMultiplier=" + backOffMultiplier
+ ", useCollisionAvoidance=" + useCollisionAvoidance
@@ -296,7 +299,7 @@
}
/**
- * Sets the logging level to use for log messages when retries are attempted.
+ * Sets whether to log stacktraces for failed messages.
*/
public RedeliveryPolicy logStackTrace(boolean logStackTrace) {
setLogStackTrace(logStackTrace);
@@ -304,6 +307,14 @@
}
/**
+ * Sets whether to log stacktrace for failed redelivery attempts
+ */
+ public RedeliveryPolicy logRetryStackTrace(boolean logRetryStackTrace) {
+ setLogRetryStackTrace(logRetryStackTrace);
+ return this;
+ }
+
+ /**
* Sets the delay pattern with delay intervals.
*/
public RedeliveryPolicy delayPattern(String delayPattern) {
@@ -471,4 +482,16 @@
public void setLogStackTrace(boolean logStackTrace) {
this.logStackTrace = logStackTrace;
}
+
+ public boolean isLogRetryStackTrace() {
+ return logRetryStackTrace;
+ }
+
+ /**
+ * Sets whether stack traces should be logged or not
+ */
+ public void setLogRetryStackTrace(boolean logRetryStackTrace) {
+ this.logRetryStackTrace = logRetryStackTrace;
+ }
+
}