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);