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

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

commit fa508e6af03135d495dc111e183a9e95bbdb6e4e
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Feb 18 16:19:29 2021 +0100

    CAMEL-16222: PooledExchangeFactory experiment
---
 .../src/main/java/org/apache/camel/ExtendedExchange.java     |  5 +++++
 .../org/apache/camel/impl/engine/PooledExchangeFactory.java  |  4 +++-
 .../main/java/org/apache/camel/support/DefaultExchange.java  | 12 +++++++-----
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java 
b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java
index 578a3ee..9232ceb 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java
@@ -36,6 +36,11 @@ public interface ExtendedExchange extends Exchange {
     void reset();
 
     /**
+     * Sets the created timestamp
+     */
+    void setCreated(long created);
+
+    /**
      * Sets the endpoint which originated this message exchange. This method 
should typically only be called by
      * {@link Endpoint} implementations
      */
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 9dff80aa..c70a591 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
@@ -94,6 +94,9 @@ public class PooledExchangeFactory extends ServiceSupport
             if (statisticsEnabled) {
                 acquired.incrementAndGet();
             }
+            // the exchange is reused but update the created to now
+            ExtendedExchange ee = exchange.adapt(ExtendedExchange.class);
+            ee.setCreated(System.currentTimeMillis());
         }
         if (autoRelease) {
             // add on completion which will return the exchange when done
@@ -129,7 +132,6 @@ public class PooledExchangeFactory extends ServiceSupport
     public void release(Exchange exchange) {
         // reset exchange before returning to pool
         try {
-            // TODO: reset on pool as this then update created to be up-to-date
             ExtendedExchange ee = exchange.adapt(ExtendedExchange.class);
             ee.reset();
 
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java
index 5ff30c9..ad238b2 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java
@@ -124,17 +124,14 @@ public final class DefaultExchange implements 
ExtendedExchange {
     public void reset() {
         this.properties.clear();
         this.exchangeId = null;
-        // TODO: This is reset time
-        this.created = System.currentTimeMillis();
+        this.created = 0;
         this.in = null;
         this.out = null;
         this.exception = null;
         this.unitOfWork = null;
         // reset pattern to original
         this.pattern = originalPattern;
-        // do not reset endpoint as it would be the same consumer/endpoint 
again
-        // this.fromEndpoint = null;
-        // this.fromRouteId = null;
+        // do not reset endpoint/fromRouteId as it would be the same 
consumer/endpoint again
         if (this.onCompletions != null) {
             this.onCompletions.clear();
         }
@@ -158,6 +155,11 @@ public final class DefaultExchange implements 
ExtendedExchange {
     }
 
     @Override
+    public void setCreated(long created) {
+        this.created = created;
+    }
+
+    @Override
     public Exchange copy() {
         DefaultExchange exchange = new DefaultExchange(this);
 

Reply via email to