You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mk...@apache.org on 2020/11/19 07:54:21 UTC

[geode] branch develop updated: GEODE-8643: Fix IllegalArgumentException in ParallelGatewaySenderQueu… (#5653)

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

mkevo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 475dce8  GEODE-8643: Fix IllegalArgumentException in ParallelGatewaySenderQueu… (#5653)
475dce8 is described below

commit 475dce8424b4523a814968a2e8c96f1b6c9000b3
Author: Alberto Gomez <al...@est.tech>
AuthorDate: Thu Nov 19 08:53:23 2020 +0100

    GEODE-8643: Fix IllegalArgumentException in ParallelGatewaySenderQueu… (#5653)
    
    * GEODE-8643: Fix IllegalArgumentException in ParallelGatewaySenderQueue for negative sleep value
    
    * GEODE-8643: Small corrections after review
---
 .../wan/parallel/ParallelGatewaySenderQueue.java     |  8 ++++++--
 .../ParallelGatewaySenderQueueJUnitTest.java         | 20 ++++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
index 2788bb2..18c1624 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueue.java
@@ -1307,7 +1307,7 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
         // Sleep a bit before trying again.
         long currentTime = System.currentTimeMillis();
         try {
-          Thread.sleep(getTimeToSleep(end - currentTime));
+          Thread.sleep(calculateTimeToSleep(end - currentTime));
         } catch (InterruptedException e) {
           Thread.currentThread().interrupt();
           break;
@@ -1393,7 +1393,11 @@ public class ParallelGatewaySenderQueue implements RegionQueue {
     return (incompleteTransactions.size() == 0);
   }
 
-  private long getTimeToSleep(long timeToWait) {
+  @VisibleForTesting
+  static long calculateTimeToSleep(long timeToWait) {
+    if (timeToWait <= 0) {
+      return 0;
+    }
     // Get the minimum of 50 and 5% of the time to wait (which by default is 1000 ms)
     long timeToSleep = Math.min(50L, ((long) (timeToWait * 0.05)));
 
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
index 48035e5..1f4d81e 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderQueueJUnitTest.java
@@ -456,6 +456,26 @@ public class ParallelGatewaySenderQueueJUnitTest {
     assertEquals(3, peekedAfter.size());
   }
 
+  @Test
+  public void testCalculateTimeToSleepNegativeInputReturnsZero() {
+    assertEquals(0L, ParallelGatewaySenderQueue.calculateTimeToSleep(-3));
+  }
+
+  @Test
+  public void testCalculateTimeToSleepZeroInputReturnsZero() {
+    assertEquals(0L, ParallelGatewaySenderQueue.calculateTimeToSleep(0));
+  }
+
+  @Test
+  public void testCalculateTimeToSleepInputGreaterThanOneThousand() {
+    assertEquals(50L, ParallelGatewaySenderQueue.calculateTimeToSleep(1002));
+  }
+
+  @Test
+  public void testCalculateTimeToSleepInputSmallerThanOneThousand() {
+    assertEquals(2L, ParallelGatewaySenderQueue.calculateTimeToSleep(40));
+  }
+
   private GatewaySenderEventImpl createGatewaySenderEventImpl(int transactionId,
       boolean isLastEventInTransaction) {
     GatewaySenderEventImpl event = mock(GatewaySenderEventImpl.class);