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 2016/01/30 17:06:31 UTC
[7/8] camel git commit: CAMEL-9551: ErrorHandler - Should not log
message body by default.
CAMEL-9551: ErrorHandler - Should not log message body by default.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1ac13365
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1ac13365
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1ac13365
Branch: refs/heads/master
Commit: 1ac133653adee33d68de3288ec29f01edd566c83
Parents: f2e9801
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Jan 30 15:55:37 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Jan 30 17:06:16 2016 +0100
----------------------------------------------------------------------
.../mbean/ManagedErrorHandlerMBean.java | 6 +++
.../builder/DefaultErrorHandlerBuilder.java | 5 +++
.../management/mbean/ManagedErrorHandler.java | 18 ++++++++
.../camel/model/OnExceptionDefinition.java | 18 ++++++++
.../camel/model/RedeliveryPolicyDefinition.java | 37 +++++++++++++++
.../camel/processor/RedeliveryErrorHandler.java | 4 +-
.../camel/processor/RedeliveryPolicy.java | 33 ++++++++++++++
...lLogExhaustedMessageHistoryWithBodyTest.java | 47 ++++++++++++++++++++
8 files changed, 167 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
index d1a276c..45aa08f 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedErrorHandlerMBean.java
@@ -131,6 +131,12 @@ public interface ManagedErrorHandlerMBean {
@ManagedAttribute(description = "RedeliveryPolicy for logging exhausted with message history")
void setLogExhaustedMessageHistory(Boolean log);
+ @ManagedAttribute(description = "RedeliveryPolicy for logging exhausted with message history")
+ Boolean getLogExhaustedMessageBody();
+
+ @ManagedAttribute(description = "RedeliveryPolicy for logging exhausted with message body")
+ void setLogExhaustedMessageBody(Boolean log);
+
@ManagedAttribute(description = "RedeliveryPolicy for logging handled and continued exceptions")
Boolean getLogContinued();
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
index 96a408e..b565bfe 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
@@ -208,6 +208,11 @@ public class DefaultErrorHandlerBuilder extends ErrorHandlerBuilderSupport {
return this;
}
+ public DefaultErrorHandlerBuilder logExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ getRedeliveryPolicy().setLogExhaustedMessageBody(logExhaustedMessageBody);
+ return this;
+ }
+
public DefaultErrorHandlerBuilder exchangeFormatterRef(String exchangeFormatterRef) {
getRedeliveryPolicy().setExchangeFormatterRef(exchangeFormatterRef);
return this;
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
index e7e0aea..314891f 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedErrorHandler.java
@@ -367,6 +367,24 @@ public class ManagedErrorHandler implements ManagedErrorHandlerMBean {
redelivery.getRedeliveryPolicy().setLogExhaustedMessageHistory(log);
}
+ public Boolean getLogExhaustedMessageBody() {
+ if (!isSupportRedelivery()) {
+ throw new IllegalArgumentException("This error handler does not support redelivery");
+ }
+
+ RedeliveryErrorHandler redelivery = (RedeliveryErrorHandler) errorHandler;
+ return redelivery.getRedeliveryPolicy().isLogExhaustedMessageBody();
+ }
+
+ public void setLogExhaustedMessageBody(Boolean log) {
+ if (!isSupportRedelivery()) {
+ throw new IllegalArgumentException("This error handler does not support redelivery");
+ }
+
+ RedeliveryErrorHandler redelivery = (RedeliveryErrorHandler) errorHandler;
+ redelivery.getRedeliveryPolicy().setLogExhaustedMessageBody(log);
+ }
+
public Boolean getLogContinued() {
if (!isSupportRedelivery()) {
return null;
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
index 433601b..9070ae0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
@@ -624,6 +624,24 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini
}
/**
+ * Sets whether to log exhausted message body with message history.
+ * Requires <tt>logExhaustedMessageHistory</tt> to be enabled.
+ */
+ public OnExceptionDefinition logExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ getOrCreateRedeliveryPolicy().logExhaustedMessageBody(logExhaustedMessageBody);
+ return this;
+ }
+
+ /**
+ * Sets whether to log exhausted message body with message history.
+ * Requires <tt>logExhaustedMessageHistory</tt> to be enabled.
+ */
+ public OnExceptionDefinition logExhaustedMessageBody(String logExhaustedMessageBody) {
+ getOrCreateRedeliveryPolicy().logExhaustedMessageBody(logExhaustedMessageBody);
+ return this;
+ }
+
+ /**
* Sets the maximum redeliveries
* <ul>
* <li>5 = default value</li>
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
index f695d26..e5975d5 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java
@@ -74,6 +74,8 @@ public class RedeliveryPolicyDefinition {
@XmlAttribute
private String logExhaustedMessageHistory;
@XmlAttribute
+ private String logExhaustedMessageBody;
+ @XmlAttribute
private String disableRedelivery;
@XmlAttribute
private String delayPattern;
@@ -150,6 +152,9 @@ public class RedeliveryPolicyDefinition {
if (logExhaustedMessageHistory != null) {
answer.setLogExhaustedMessageHistory(CamelContextHelper.parseBoolean(context, logExhaustedMessageHistory));
}
+ if (logExhaustedMessageBody != null) {
+ answer.setLogExhaustedMessageBody(CamelContextHelper.parseBoolean(context, logExhaustedMessageBody));
+ }
if (disableRedelivery != null) {
if (CamelContextHelper.parseBoolean(context, disableRedelivery)) {
answer.setMaximumRedeliveries(0);
@@ -496,6 +501,30 @@ public class RedeliveryPolicyDefinition {
}
/**
+ * Sets whether exhausted message body should be logged including message history or not (supports property placeholders).
+ * Can be used to include or reduce verbose. Requires <tt>logExhaustedMessageHistory</tt> to be enabled.
+ *
+ * @param logExhaustedMessageBody whether exhausted message body should be logged with message history
+ * @return the builder
+ */
+ public RedeliveryPolicyDefinition logExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ setLogExhaustedMessageBody(Boolean.toString(logExhaustedMessageBody));
+ return this;
+ }
+
+ /**
+ * Sets whether exhausted message body should be logged including message history or not (supports property placeholders).
+ * Can be used to include or reduce verbose. Requires <tt>logExhaustedMessageHistory</tt> to be enabled.
+ *
+ * @param logExhaustedMessageBody whether exhausted message body should be logged with message history
+ * @return the builder
+ */
+ public RedeliveryPolicyDefinition logExhaustedMessageBody(String logExhaustedMessageBody) {
+ setLogExhaustedMessageBody(logExhaustedMessageBody);
+ return this;
+ }
+
+ /**
* Sets the maximum redeliveries
* <ul>
* <li>x = redeliver at most x times</li>
@@ -748,6 +777,14 @@ public class RedeliveryPolicyDefinition {
this.logExhaustedMessageHistory = logExhaustedMessageHistory;
}
+ public String getLogExhaustedMessageBody() {
+ return logExhaustedMessageBody;
+ }
+
+ public void setLogExhaustedMessageBody(String logExhaustedMessageBody) {
+ this.logExhaustedMessageBody = logExhaustedMessageBody;
+ }
+
public String getDisableRedelivery() {
return disableRedelivery;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
index 04784eb..20026f6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
@@ -1157,7 +1157,9 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme
String msg = message;
// should we include message history
if (!shouldRedeliver && data.currentRedeliveryPolicy.isLogExhaustedMessageHistory()) {
- String routeStackTrace = MessageHelper.dumpMessageHistoryStacktrace(exchange, exchangeFormatter, e != null && logStackTrace);
+ // only use the exchange formatter if we should log exhausted message body
+ ExchangeFormatter formatter = data.currentRedeliveryPolicy.isLogExhaustedMessageBody() ? exchangeFormatter : null;
+ String routeStackTrace = MessageHelper.dumpMessageHistoryStacktrace(exchange, formatter, e != null && logStackTrace);
if (routeStackTrace != null) {
msg = msg + "\n" + routeStackTrace;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
index 4b33a4b..8b835f2 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryPolicy.java
@@ -98,6 +98,7 @@ public class RedeliveryPolicy implements Cloneable, Serializable {
protected boolean logExhausted = true;
protected boolean logNewException = true;
protected Boolean logExhaustedMessageHistory;
+ protected Boolean logExhaustedMessageBody;
protected boolean logRetryAttempted = true;
protected String delayPattern;
protected boolean asyncDelayedRedelivery;
@@ -124,6 +125,7 @@ public class RedeliveryPolicy implements Cloneable, Serializable {
+ ", logExhausted=" + logExhausted
+ ", logNewException=" + logNewException
+ ", logExhaustedMessageHistory=" + logExhaustedMessageHistory
+ + ", logExhaustedMessageBody=" + logExhaustedMessageBody
+ ", useExponentialBackOff=" + useExponentialBackOff
+ ", backOffMultiplier=" + backOffMultiplier
+ ", useCollisionAvoidance=" + useCollisionAvoidance
@@ -405,6 +407,14 @@ public class RedeliveryPolicy implements Cloneable, Serializable {
}
/**
+ * Sets whether to log exhausted errors including message body (requires message history to be enabled)
+ */
+ public RedeliveryPolicy logExhaustedMessageBody(boolean logExhaustedMessageBody) {
+ setLogExhaustedMessageBody(logExhaustedMessageBody);
+ return this;
+ }
+
+ /**
* Sets the delay pattern with delay intervals.
*/
public RedeliveryPolicy delayPattern(String delayPattern) {
@@ -708,6 +718,29 @@ public class RedeliveryPolicy implements Cloneable, Serializable {
this.logExhaustedMessageHistory = logExhaustedMessageHistory;
}
+ public boolean isLogExhaustedMessageBody() {
+ // should default be disabled
+ return logExhaustedMessageBody != null && logExhaustedMessageBody;
+ }
+
+ /**
+ * Whether the option logExhaustedMessageBody has been configured or not
+ *
+ * @return <tt>null</tt> if not configured, or the configured value as true or false
+ * @see #isLogExhaustedMessageBody()
+ */
+ public Boolean getLogExhaustedMessageBody() {
+ return logExhaustedMessageBody;
+ }
+
+ /**
+ * Sets whether exhausted message body/headers should be logged with message history included
+ * (requires logExhaustedMessageHistory to be enabled).
+ */
+ public void setLogExhaustedMessageBody(Boolean logExhaustedMessageBody) {
+ this.logExhaustedMessageBody = logExhaustedMessageBody;
+ }
+
public boolean isAsyncDelayedRedelivery() {
return asyncDelayedRedelivery;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1ac13365/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelLogExhaustedMessageHistoryWithBodyTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelLogExhaustedMessageHistoryWithBodyTest.java b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelLogExhaustedMessageHistoryWithBodyTest.java
new file mode 100644
index 0000000..13403ec
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/processor/DeadLetterChannelLogExhaustedMessageHistoryWithBodyTest.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+
+public class DeadLetterChannelLogExhaustedMessageHistoryWithBodyTest extends ContextTestSupport {
+
+ public void testLogExhaustedMessageHistory() throws Exception {
+ getMockEndpoint("mock:dead").expectedMessageCount(1);
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // no delay to speedup test
+ errorHandler(deadLetterChannel("mock:dead").redeliveryDelay(0).maximumRedeliveries(3)
+ .logExhaustedMessageHistory(true).logExhaustedMessageBody(true));
+
+ from("direct:start")
+ .log("Incoming ${body}")
+ .throwException(new IllegalArgumentException("Forced"));
+ }
+ };
+ }
+}