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 2020/10/21 11:41:49 UTC

[camel] 01/02: camel-core - Optimize log EIP to eager compute whether should log and also avoid fire listenerns if they are empty

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

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

commit cf14e0bda9e727da3f3379c78b8336f6cead831a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 21 12:38:12 2020 +0200

    camel-core - Optimize log EIP to eager compute whether should log and also avoid fire listenerns if they are empty
---
 .../org/apache/camel/processor/LogProcessor.java    | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
index db3c548..3fe420d 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/LogProcessor.java
@@ -44,38 +44,37 @@ public class LogProcessor extends AsyncProcessorSupport implements Traceable, Id
     private final CamelLogger logger;
     private final MaskingFormatter formatter;
     private final Set<LogListener> listeners;
+    private final boolean shouldLog;
 
     public LogProcessor(Expression expression, CamelLogger logger, MaskingFormatter formatter, Set<LogListener> listeners) {
         this.expression = expression;
         this.logger = logger;
         this.formatter = formatter;
         this.listeners = listeners;
+        this.shouldLog = logger.shouldLog();
     }
 
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
-        try {
-            if (logger.shouldLog()) {
+        if (shouldLog) {
+            try {
                 String msg = expression.evaluate(exchange, String.class);
                 if (formatter != null) {
                     msg = formatter.format(msg);
                 }
-                msg = fireListeners(exchange, msg);
+                if (!listeners.isEmpty()) {
+                    msg = fireListeners(exchange, msg);
+                }
                 logger.doLog(msg);
+            } catch (Throwable e) {
+                exchange.setException(e);
             }
-        } catch (Exception e) {
-            exchange.setException(e);
-        } finally {
-            // callback must be invoked
-            callback.done(true);
         }
+        callback.done(true);
         return true;
     }
 
     private String fireListeners(Exchange exchange, String message) {
-        if (listeners == null) {
-            return message;
-        }
         for (LogListener listener : listeners) {
             if (listener == null) {
                 continue;