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

ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new d46219739f IGNITE-23456 Fix RetryLimitPolicy behavior (#4657)
d46219739f is described below

commit d46219739f3b94a8513c047d8fa14c913b75fc2f
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Wed Oct 30 19:15:55 2024 +0200

    IGNITE-23456 Fix RetryLimitPolicy behavior (#4657)
    
    It was not possible to disable retries previously, 0 meant infinite retries 
and 1 meant 1 retry. Some tests were using incorrect values.
    
    Change to:
    * -1 for infinite retries
    * 0 for disabled retries
    * N for max N retries
---
 .../java/org/apache/ignite/client/RetryLimitPolicy.java     |  8 ++++++--
 .../test/java/org/apache/ignite/client/ConnectionTest.java  | 13 +++++++------
 .../java/org/apache/ignite/client/DataStreamerTest.java     |  5 ++---
 .../test/java/org/apache/ignite/client/HeartbeatTest.java   |  2 +-
 .../java/org/apache/ignite/client/SchemaUpdateTest.java     |  2 +-
 .../internal/streamer/ItClientDataStreamerLoadTest.java     |  2 +-
 6 files changed, 18 insertions(+), 14 deletions(-)

diff --git 
a/modules/client/src/main/java/org/apache/ignite/client/RetryLimitPolicy.java 
b/modules/client/src/main/java/org/apache/ignite/client/RetryLimitPolicy.java
index 2519344826..19b2d4fa7d 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/client/RetryLimitPolicy.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/client/RetryLimitPolicy.java
@@ -39,7 +39,7 @@ public class RetryLimitPolicy implements RetryPolicy {
     }
 
     /**
-     * Sets the retry limit. 0 or less for no limit.
+     * Sets the retry limit. 0 for no retries. -1 or less for unlimited 
retries.
      *
      * @return this instance.
      */
@@ -54,7 +54,11 @@ public class RetryLimitPolicy implements RetryPolicy {
     public boolean shouldRetry(RetryPolicyContext context) {
         Objects.requireNonNull(context);
 
-        if (retryLimit <= 0) {
+        if (retryLimit == 0) {
+            return false;
+        }
+
+        if (retryLimit < 0) {
             return true;
         }
 
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
index d9e5f26d90..44ad102909 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ConnectionTest.java
@@ -96,12 +96,13 @@ public class ConnectionTest extends AbstractClientTest {
     @SuppressWarnings("ThrowableNotThrown")
     @Test
     public void testNoResponseFromServerWithinConnectTimeoutThrowsException() {
-        Function<Integer, Integer> responseDelay = x -> 500;
+        // Delay should be more than TimeoutWorker#sleepInterval.
+        Function<Integer, Integer> responseDelay = x -> 1000;
 
-        try (var srv = new TestServer(300, new FakeIgnite(), x -> false, 
responseDelay, null, UUID.randomUUID(), null, null)) {
+        try (var srv = new TestServer(3000, new FakeIgnite(), x -> false, 
responseDelay, null, UUID.randomUUID(), null, null)) {
             Builder builder = IgniteClient.builder()
                     .addresses("127.0.0.1:" + srv.port())
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .connectTimeout(50);
 
             assertThrowsWithCause(builder::build, TimeoutException.class);
@@ -117,7 +118,7 @@ public class ConnectionTest extends AbstractClientTest {
         try (var srv = new TestServer(300, new FakeIgnite(), x -> false, 
responseDelay, null, UUID.randomUUID(), null, null)) {
             Builder builder = IgniteClient.builder()
                     .addresses("127.0.0.1:" + srv.port())
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .operationTimeout(30);
 
             try (IgniteClient client = builder.build()) {
@@ -141,7 +142,7 @@ public class ConnectionTest extends AbstractClientTest {
 
             Builder clientBuilder = IgniteClient.builder()
                     .addresses("127.0.0.1:" + testServer.port())
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .connectTimeout(500);
 
             assertThrowsWithCause(
@@ -169,7 +170,7 @@ public class ConnectionTest extends AbstractClientTest {
 
             Builder clientBuilder = IgniteClient.builder()
                     .addresses("127.0.0.1:" + testServer.port())
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .connectTimeout(30_000);
 
             CountDownLatch syncLatch = new CountDownLatch(1);
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
index 445d0e2979..a4813fb9f0 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/client/DataStreamerTest.java
@@ -227,10 +227,9 @@ public class DataStreamerTest extends 
AbstractClientTableTest {
         Function<Integer, Boolean> shouldDropConnection = idx -> idx % 5 == 4;
         var ignite2 = startTestServer2(shouldDropConnection, idx -> 0);
 
-        // Streamer has it's own retry policy, so we can disable retries on 
the client.
         Builder builder = IgniteClient.builder()
                 .addresses("localhost:" + testServer2.port())
-                .retryPolicy(new RetryLimitPolicy().retryLimit(0))
+                .retryPolicy(new RetryLimitPolicy().retryLimit(8))
                 .reconnectThrottlingPeriod(0)
                 .loggerFactory(new ConsoleLoggerFactory("client-2"));
 
@@ -308,7 +307,7 @@ public class DataStreamerTest extends 
AbstractClientTableTest {
         Builder builder = IgniteClient.builder()
                 .addresses("localhost:" + testServer2.port())
                 .loggerFactory(logger)
-                .retryPolicy(new RetryLimitPolicy().retryLimit(1));
+                .retryPolicy(new RetryLimitPolicy().retryLimit(0));
 
         client2 = builder.build();
         RecordView<Tuple> view = defaultTableView(ignite2, client2);
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
index 28e9ad9cf4..35259d0612 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/HeartbeatTest.java
@@ -93,7 +93,7 @@ public class HeartbeatTest extends BaseIgniteAbstractTest {
 
             Builder builder = IgniteClient.builder()
                     .addresses("127.0.0.1:" + srvPort)
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .heartbeatTimeout(30)
                     .reconnectThrottlingPeriod(5000)
                     .reconnectThrottlingRetries(0)
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
index d455b845d4..49b839b0e8 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/client/SchemaUpdateTest.java
@@ -100,7 +100,7 @@ public class SchemaUpdateTest extends 
BaseIgniteAbstractTest {
                 .addresses("127.0.0.1:" + server.port())
                 .metricsEnabled(true)
                 .loggerFactory(new TestLoggerFactory("client"))
-                .retryPolicy(new RetryLimitPolicy().retryLimit(0))
+                .retryPolicy(new RetryLimitPolicy().retryLimit(-1))
                 .build();
     }
 
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/streamer/ItClientDataStreamerLoadTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/streamer/ItClientDataStreamerLoadTest.java
index 1699f18f99..4ff1a1abf2 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/streamer/ItClientDataStreamerLoadTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/streamer/ItClientDataStreamerLoadTest.java
@@ -66,7 +66,7 @@ public final class ItClientDataStreamerLoadTest extends 
ClusterPerClassIntegrati
                     .addresses("localhost")
                     .heartbeatInterval(1000)
                     .heartbeatTimeout(2000)
-                    .retryPolicy(new RetryLimitPolicy().retryLimit(1))
+                    .retryPolicy(new RetryLimitPolicy().retryLimit(0))
                     .build();
         }
     }

Reply via email to