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 2023/07/22 09:13:53 UTC

[camel] branch derby updated: Flaky test

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

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


The following commit(s) were added to refs/heads/derby by this push:
     new e488b34aef5 Flaky test
e488b34aef5 is described below

commit e488b34aef5893e3d3e8405dd440e4fd00443aba
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jul 22 11:13:38 2023 +0200

    Flaky test
---
 .../jdbc/AbstractJdbcAggregationTestSupport.java   | 34 ++++++++++++++++++++--
 .../JdbcAggregationRepositoryAlotDataTest.java     |  6 ++--
 2 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/AbstractJdbcAggregationTestSupport.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/AbstractJdbcAggregationTestSupport.java
index b4bc1cc8ff3..d30bdda85de 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/AbstractJdbcAggregationTestSupport.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/AbstractJdbcAggregationTestSupport.java
@@ -19,7 +19,9 @@ package org.apache.camel.processor.aggregate.jdbc;
 import org.apache.camel.AggregationStrategy;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.spi.OptimisticLockingAggregationRepository;
 import org.apache.camel.test.spring.junit5.CamelSpringTestSupport;
+import org.apache.camel.util.ObjectHelper;
 import org.springframework.context.support.AbstractApplicationContext;
 
 public abstract class AbstractJdbcAggregationTestSupport extends CamelSpringTestSupport {
@@ -65,9 +67,35 @@ public abstract class AbstractJdbcAggregationTestSupport extends CamelSpringTest
     }
 
     protected Exchange repoAddAndGet(String key, Exchange exchange) {
-        repo.add(context, key, exchange);
-        // recover the exchange with the new version to be able to add again
-        exchange = repo.get(context, key);
+        return repoAddAndGet(key, exchange, true);
+    }
+
+    protected Exchange repoAddAndGet(String key, Exchange exchange, boolean optimistic) {
+        int retry = optimistic ? 5 : 1;
+        while (retry-- > 0) {
+            try {
+                repo.add(context, key, exchange);
+                // recover the exchange with the new version to be able to add again
+                exchange = repo.get(context, key);
+                return exchange;
+            } catch (Exception e) {
+                if (optimistic) {
+                    OptimisticLockingAggregationRepository.OptimisticLockingException ole
+                            = ObjectHelper.getException(OptimisticLockingAggregationRepository.OptimisticLockingException.class,
+                                    e);
+                    if (ole != null) {
+                        // okay lets try again
+                        try {
+                            Thread.sleep(50);
+                        } catch (InterruptedException ex) {
+                            // ignore
+                        }
+                        continue;
+                    }
+                }
+                throw e;
+            }
+        }
         return exchange;
     }
 
diff --git a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepositoryAlotDataTest.java b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepositoryAlotDataTest.java
index 151a135268b..5adf977f952 100644
--- a/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepositoryAlotDataTest.java
+++ b/components/camel-sql/src/test/java/org/apache/camel/processor/aggregate/jdbc/JdbcAggregationRepositoryAlotDataTest.java
@@ -31,7 +31,7 @@ public class JdbcAggregationRepositoryAlotDataTest extends AbstractJdbcAggregati
         Exchange exchange = new DefaultExchange(context);
         for (int i = 0; i < 100; i++) {
             exchange.getIn().setBody("counter:" + i);
-            exchange = repoAddAndGet(key, exchange);
+            exchange = repoAddAndGet(key, exchange, false);
         }
 
         // Get it back..
@@ -46,7 +46,7 @@ public class JdbcAggregationRepositoryAlotDataTest extends AbstractJdbcAggregati
                 Exchange exchange = new DefaultExchange(context);
                 exchange.getIn().setBody("counter:" + i);
                 String key = i % 2 == 0 ? "foo" : "bar";
-                repoAddAndGet(key, exchange);
+                repoAddAndGet(key, exchange, false);
             }
         });
     }
@@ -57,7 +57,7 @@ public class JdbcAggregationRepositoryAlotDataTest extends AbstractJdbcAggregati
             Exchange exchange = new DefaultExchange(context);
             exchange.getIn().setBody("counter:" + i);
             String key = "key" + i;
-            repoAddAndGet(key, exchange);
+            repoAddAndGet(key, exchange, false);
         }
 
         // Get it back..