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 2021/03/14 10:56:37 UTC

[camel] branch master updated (60e193a -> 8c2939c)

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

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


    from 60e193a  Add XML schema references for Camel 2.25.3
     new 34d0da0  CAMEL-16353: camel-core - Force eager classloading in build phase
     new ec33813  Remove not used code
     new 7300fa5  CAMEL-16353: camel-core - Force eager classloading in build phase
     new a3f58c9  Fixed CS
     new 8c2939c  CAMEL-16353: camel-core - Force eager classloading in build phase

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/camel/spi/UnitOfWorkFactory.java   |  5 +++++
 .../camel/impl/engine/CamelInternalProcessor.java      |  6 ++++++
 .../impl/engine/DefaultExchangeFactoryManager.java     | 17 +++++++++++++++++
 .../camel/impl/engine/DefaultReactiveExecutor.java     | 10 ++++++++++
 .../apache/camel/impl/engine/DefaultUnitOfWork.java    |  4 ++++
 .../camel/impl/engine/DefaultUnitOfWorkFactory.java    |  6 ++++++
 .../camel/impl/engine/PooledExchangeFactory.java       |  1 +
 .../main/java/org/apache/camel/processor/Pipeline.java |  6 ++++++
 .../org/apache/camel/processor/PipelineHelper.java     |  4 ++++
 .../processor/errorhandler/RedeliveryErrorHandler.java | 18 +++++-------------
 .../java/org/apache/camel/main/BaseMainSupport.java    |  2 +-
 .../java/org/apache/camel/support/ExchangeHelper.java  |  5 +++++
 .../org/apache/camel/support/UnitOfWorkHelper.java     |  4 ++++
 13 files changed, 74 insertions(+), 14 deletions(-)


[camel] 02/05: Remove not used code

Posted by da...@apache.org.
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 ec3381339c2e99c58c50f4b8aa147ed2ad164ed0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 14 09:41:16 2021 +0100

    Remove not used code
---
 .../camel/processor/errorhandler/RedeliveryErrorHandler.java | 12 ------------
 1 file changed, 12 deletions(-)

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 25b4379..544de26 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
@@ -1559,18 +1559,6 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         return false;
     }
 
-    /**
-     * Gets the number of exchanges that are pending for redelivery
-     */
-    public int getPendingRedeliveryCount() {
-        int answer = redeliverySleepCounter.get();
-        if (executorService instanceof ThreadPoolExecutor) {
-            answer += ((ThreadPoolExecutor) executorService).getQueue().size();
-        }
-
-        return answer;
-    }
-
     @Override
     protected void doStart() throws Exception {
         // determine if redeliver is enabled or not


[camel] 01/05: CAMEL-16353: camel-core - Force eager classloading in build phase

Posted by da...@apache.org.
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 34d0da0ee7ab3d80722905aba52a98f8f2e7e8b1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 14 09:41:04 2021 +0100

    CAMEL-16353: camel-core - Force eager classloading in build phase
---
 .../java/org/apache/camel/impl/engine/CamelInternalProcessor.java   | 6 ++++++
 .../src/main/java/org/apache/camel/processor/Pipeline.java          | 6 ++++++
 .../src/main/java/org/apache/camel/processor/PipelineHelper.java    | 4 ++++
 3 files changed, 16 insertions(+)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
index 8f367eb..a37ff89 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/CamelInternalProcessor.java
@@ -128,6 +128,12 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor implements In
 
         // only create pooled task factory
         if (pooled) {
+
+            // force to create and load the class during build time so the JVM does not
+            // load the class on first exchange to be created
+            AsyncAfterTask dummy = new AsyncAfterTask(null);
+            LOG.trace("Warming up CamelInternalPooledTaskFactory loaded class: {}", dummy.getClass().getName());
+
             taskFactory = new CamelInternalPooledTaskFactory();
             int capacity = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().getCapacity();
             taskFactory.setCapacity(capacity);
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
index c583f00..5389003 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/Pipeline.java
@@ -171,6 +171,12 @@ public class Pipeline extends AsyncProcessorSupport implements Navigate<Processo
 
     @Override
     protected void doBuild() throws Exception {
+        // force to create and load the class during build time so the JVM does not
+        // load the class on first exchange to be created
+        PipelineHelper.warmup(LOG);
+        PipelineTask dummy = new PipelineTask();
+        LOG.trace("Warming up Pipeline loaded class: {}", dummy.getClass().getName());
+
         boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
         if (pooled) {
             taskFactory = new PooledTaskFactory() {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/PipelineHelper.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/PipelineHelper.java
index cb37b16..6f4b0fd 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/PipelineHelper.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/PipelineHelper.java
@@ -29,6 +29,10 @@ public final class PipelineHelper {
     private PipelineHelper() {
     }
 
+    public static void warmup(Logger log) {
+        log.trace("Warming up PipelineHelper");
+    }
+
     /**
      * Should we continue processing the exchange?
      *


[camel] 04/05: Fixed CS

Posted by da...@apache.org.
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 a3f58c9054367c9f9bfeaf6326732ae47fe9f1b7
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 14 09:50:45 2021 +0100

    Fixed CS
---
 .../camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 04c6de9..54422a9 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -86,7 +86,6 @@ public abstract class BaseMainSupport extends BaseService {
     public static final String PROPERTY_PLACEHOLDER_LOCATION = "camel.main.property-placeholder-location";
 
     private static final Logger LOG = LoggerFactory.getLogger(BaseMainSupport.class);
-    private final MainHelper helper;
     protected final List<MainListener> listeners = new ArrayList<>();
     protected volatile CamelContext camelContext;
     protected MainConfigurationProperties mainConfigurationProperties = new MainConfigurationProperties();
@@ -96,6 +95,7 @@ public abstract class BaseMainSupport extends BaseService {
     protected String defaultPropertyPlaceholderLocation = DEFAULT_PROPERTY_PLACEHOLDER_LOCATION;
     protected Properties initialProperties;
     protected Properties overrideProperties;
+    private final MainHelper helper;
 
     protected BaseMainSupport() {
         helper = new MainHelper();


[camel] 05/05: CAMEL-16353: camel-core - Force eager classloading in build phase

Posted by da...@apache.org.
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 8c2939c45f67cc84c36e8ec2973eadda95477155
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 14 11:44:50 2021 +0100

    CAMEL-16353: camel-core - Force eager classloading in build phase
---
 .../java/org/apache/camel/spi/UnitOfWorkFactory.java    |  5 +++++
 .../impl/engine/DefaultExchangeFactoryManager.java      | 17 +++++++++++++++++
 .../org/apache/camel/impl/engine/DefaultUnitOfWork.java |  4 ++++
 .../camel/impl/engine/DefaultUnitOfWorkFactory.java     |  6 ++++++
 .../apache/camel/impl/engine/PooledExchangeFactory.java |  1 +
 .../java/org/apache/camel/support/ExchangeHelper.java   |  5 +++++
 .../java/org/apache/camel/support/UnitOfWorkHelper.java |  4 ++++
 7 files changed, 42 insertions(+)

diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
index e3b5715..ab76ae1 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java
@@ -19,6 +19,7 @@ package org.apache.camel.spi;
 import org.apache.camel.AfterPropertiesConfigured;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
+import org.slf4j.Logger;
 
 /**
  * Factory to create {@link org.apache.camel.spi.UnitOfWork}.
@@ -37,4 +38,8 @@ public interface UnitOfWorkFactory extends AfterPropertiesConfigured {
     default void afterPropertiesConfigured(CamelContext camelContext) {
         // noop
     }
+
+    default void warmup(Logger log) {
+        // noop
+    }
 }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExchangeFactoryManager.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExchangeFactoryManager.java
index eb3aa1e..1568966 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExchangeFactoryManager.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultExchangeFactoryManager.java
@@ -24,12 +24,19 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Consumer;
+import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
+import org.apache.camel.support.ExchangeHelper;
+import org.apache.camel.support.UnitOfWorkHelper;
 import org.apache.camel.support.service.ServiceSupport;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class DefaultExchangeFactoryManager extends ServiceSupport implements ExchangeFactoryManager, CamelContextAware {
 
+    private static final Logger LOG = LoggerFactory.getLogger(DefaultExchangeFactoryManager.class);
+
     private final Map<Consumer, ExchangeFactory> factories = new ConcurrentHashMap<>();
     private final UtilizationStatistics statistics = new UtilizationStatistics();
     private CamelContext camelContext;
@@ -166,6 +173,16 @@ public class DefaultExchangeFactoryManager extends ServiceSupport implements Exc
     }
 
     @Override
+    protected void doBuild() throws Exception {
+        super.doBuild();
+        // force to create and load the class during build time so the JVM does not
+        // load the class on first exchange to be created
+        ExchangeHelper.warmup(LOG);
+        UnitOfWorkHelper.warmup(LOG);
+        camelContext.adapt(ExtendedCamelContext.class).getUnitOfWorkFactory().warmup(LOG);
+    }
+
+    @Override
     protected void doShutdown() throws Exception {
         factories.clear();
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
index c80c515..f8f143a 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWork.java
@@ -84,6 +84,10 @@ public class DefaultUnitOfWork implements UnitOfWork {
         doOnPrepare(exchange);
     }
 
+    static void warmup(Logger log) {
+        log.trace("Warming up DefaultUnitOfWork");
+    }
+
     UnitOfWork newInstance(Exchange exchange) {
         return new DefaultUnitOfWork(exchange, inflightRepository, allowUseOriginalMessage, useBreadcrumb);
     }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
index dd91419..78a36eb 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java
@@ -21,6 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.spi.InflightRepository;
 import org.apache.camel.spi.UnitOfWork;
 import org.apache.camel.spi.UnitOfWorkFactory;
+import org.slf4j.Logger;
 
 /**
  * Default {@link org.apache.camel.spi.UnitOfWorkFactory}
@@ -34,6 +35,11 @@ public class DefaultUnitOfWorkFactory implements UnitOfWorkFactory {
     private boolean useBreadcrumb;
 
     @Override
+    public void warmup(Logger log) {
+        DefaultUnitOfWork.warmup(log);
+    }
+
+    @Override
     public UnitOfWork createUnitOfWork(Exchange exchange) {
         UnitOfWork answer;
         if (usedMDCLogging) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
index 4eb0a7b..44e9190 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
@@ -48,6 +48,7 @@ public final class PooledExchangeFactory extends PrototypeExchangeFactory {
         // load the class on first exchange to be created
         DefaultPooledExchange dummy = new DefaultPooledExchange(camelContext);
         LOG.trace("Warming up PooledExchangeFactory loaded class: {}", dummy.getClass().getName());
+
     }
 
     @Override
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 42d8408..7006e7e 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
@@ -56,6 +56,7 @@ import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.Scanner;
 import org.apache.camel.util.StringHelper;
+import org.slf4j.Logger;
 
 /**
  * Some helper methods for working with {@link Exchange} objects
@@ -68,6 +69,10 @@ public final class ExchangeHelper {
     private ExchangeHelper() {
     }
 
+    public static void warmup(Logger log) {
+        log.trace("Warming up ExchangeHelper");
+    }
+
     /**
      * Extracts the Exchange.BINDING of the given type or null if not present
      *
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java
index 38bca85..4d99365 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/UnitOfWorkHelper.java
@@ -38,6 +38,10 @@ public final class UnitOfWorkHelper {
     private UnitOfWorkHelper() {
     }
 
+    public static void warmup(Logger log) {
+        log.trace("Warming up UnitOfWorkHelper");
+    }
+
     /**
      * Done and stop the {@link UnitOfWork}.
      *


[camel] 03/05: CAMEL-16353: camel-core - Force eager classloading in build phase

Posted by da...@apache.org.
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 7300fa5fb2e77f561476cdce9e31dc9509bdad00
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 14 09:49:00 2021 +0100

    CAMEL-16353: camel-core - Force eager classloading in build phase
---
 .../org/apache/camel/impl/engine/DefaultReactiveExecutor.java  | 10 ++++++++++
 .../camel/processor/errorhandler/RedeliveryErrorHandler.java   |  6 +++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
index a2cb45b..f9e5d1d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
@@ -99,6 +99,16 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE
     }
 
     @Override
+    protected void doBuild() throws Exception {
+        super.doBuild();
+
+        // force to create and load the class during build time so the JVM does not
+        // load the class on first exchange to be created
+        Worker dummy = new Worker(0, this);
+        LOG.trace("Warming up DefaultReactiveExecutor loaded class: {}", dummy.getClass().getName());
+    }
+
+    @Override
     protected void doStop() throws Exception {
         if (LOG.isDebugEnabled() && statisticsEnabled) {
             LOG.debug("Stopping DefaultReactiveExecutor [createdWorkers: {}, runningWorkers: {}, pendingTasks: {}]",
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 544de26..1481748 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
@@ -21,7 +21,6 @@ import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -1588,6 +1587,11 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
         simpleTask = deadLetter == null && !redeliveryEnabled && (exceptionPolicies == null || exceptionPolicies.isEmpty())
                 && onPrepareProcessor == null;
 
+        // force to create and load the class during build time so the JVM does not
+        // load the class on first exchange to be created
+        Object dummy = simpleTask ? new SimpleTask() : new RedeliveryTask();
+        LOG.trace("Warming up RedeliveryErrorHandler loaded class: {}", dummy.getClass().getName());
+
         boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled();
         if (pooled) {
             taskFactory = new PooledTaskFactory() {