From 44f2cb7d5becfdbaabaddd331ecf7ef6dc2c0b3e Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Tue, 21 Jul 2020 06:09:27 -0400 Subject: [PATCH 1/9] Pom change to 2.10.65 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f21b230e..4e8da722 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ - 2.11.8-SNAPSHOT + 2.10.65-SNAPSHOT From bc5dae270f249ec036bbbae1ccf824a15f7f1c94 Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 17:58:39 -0400 Subject: [PATCH 2/9] Fixing bug where isRunning is not set --- .../java/software/amazon/kinesis/leases/LeaseCleanupManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index de734646..4e43c638 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -82,6 +82,7 @@ public class LeaseCleanupManager { */ public void start() { log.debug("Starting lease cleanup thread."); + isRunning = true; completedLeaseStopwatch.start(); garbageLeaseStopwatch.start(); From 5470bc74880478b1097e50f0f39fdd129c1fb16a Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 17:59:29 -0400 Subject: [PATCH 3/9] Revert "Pom change to 2.10.65" This reverts commit 44f2cb7d5becfdbaabaddd331ecf7ef6dc2c0b3e. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4e8da722..f21b230e 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ - 2.10.65-SNAPSHOT + 2.11.8-SNAPSHOT From 5a0a6c600e80d39d81764be4fb7579faf45f8a6a Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 18:08:35 -0400 Subject: [PATCH 4/9] Adding safety check around stopwatches --- .../amazon/kinesis/leases/LeaseCleanupManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index 4e43c638..0feb25e6 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -82,12 +82,15 @@ public class LeaseCleanupManager { */ public void start() { log.debug("Starting lease cleanup thread."); - isRunning = true; - completedLeaseStopwatch.start(); - garbageLeaseStopwatch.start(); + + if (!isRunning) { + completedLeaseStopwatch.start(); + garbageLeaseStopwatch.start(); + } deletionThreadPool.scheduleAtFixedRate(new LeaseCleanupThread(), INITIAL_DELAY, leaseCleanupIntervalMillis, TimeUnit.MILLISECONDS); + isRunning = true; } /** From 9c8b89e0c6a96390d507c59be23a1de688658a54 Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 18:14:11 -0400 Subject: [PATCH 5/9] Moving to after watches and executor initialized --- .../amazon/kinesis/leases/LeaseCleanupManager.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index 0feb25e6..1d73c852 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -83,10 +83,8 @@ public class LeaseCleanupManager { public void start() { log.debug("Starting lease cleanup thread."); - if (!isRunning) { - completedLeaseStopwatch.start(); - garbageLeaseStopwatch.start(); - } + completedLeaseStopwatch.start(); + garbageLeaseStopwatch.start(); deletionThreadPool.scheduleAtFixedRate(new LeaseCleanupThread(), INITIAL_DELAY, leaseCleanupIntervalMillis, TimeUnit.MILLISECONDS); @@ -138,7 +136,7 @@ public class LeaseCleanupManager { } public LeaseCleanupResult cleanupLease(LeasePendingDeletion leasePendingDeletion, - boolean timeToCheckForCompletedShard, boolean timeToCheckForGarbageShard) throws TimeoutException, + boolean timeToCheckForCompletedShard, boolean timeToCheckForGarbageShard) throws TimeoutException, InterruptedException, DependencyException, ProvisionedThroughputException, InvalidStateException { final Lease lease = leasePendingDeletion.lease(); final ShardInfo shardInfo = leasePendingDeletion.shardInfo(); From cadbc0503b8eec5f974c2bd0da80504b7ea504cc Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 18:15:57 -0400 Subject: [PATCH 6/9] reverting whitespace --- .../software/amazon/kinesis/leases/LeaseCleanupManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index 1d73c852..b725696c 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -136,7 +136,7 @@ public class LeaseCleanupManager { } public LeaseCleanupResult cleanupLease(LeasePendingDeletion leasePendingDeletion, - boolean timeToCheckForCompletedShard, boolean timeToCheckForGarbageShard) throws TimeoutException, + boolean timeToCheckForCompletedShard, boolean timeToCheckForGarbageShard) throws TimeoutException, InterruptedException, DependencyException, ProvisionedThroughputException, InvalidStateException { final Lease lease = leasePendingDeletion.lease(); final ShardInfo shardInfo = leasePendingDeletion.shardInfo(); From 15c45d2029af722b3e724b3e99f95b2930f8690e Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 19:17:27 -0400 Subject: [PATCH 7/9] Adding a unit test --- .../kinesis/leases/LeaseCleanupManager.java | 18 ++++++++++-------- .../leases/LeaseCleanupManagerTest.java | 11 +++++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index b725696c..0fb9ccd6 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -81,14 +81,16 @@ public class LeaseCleanupManager { * {@link LeaseCleanupManager#leaseCleanupIntervalMillis} */ public void start() { - log.debug("Starting lease cleanup thread."); - - completedLeaseStopwatch.start(); - garbageLeaseStopwatch.start(); - - deletionThreadPool.scheduleAtFixedRate(new LeaseCleanupThread(), INITIAL_DELAY, leaseCleanupIntervalMillis, - TimeUnit.MILLISECONDS); - isRunning = true; + if (!isRunning) { + log.debug("Starting lease cleanup thread."); + completedLeaseStopwatch.reset().start(); + garbageLeaseStopwatch.reset().start(); + deletionThreadPool.scheduleAtFixedRate(new LeaseCleanupThread(), INITIAL_DELAY, leaseCleanupIntervalMillis, + TimeUnit.MILLISECONDS); + isRunning = true; + } else { + log.debug("Lease cleanup thread already running, no need to start."); + } } /** diff --git a/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCleanupManagerTest.java b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCleanupManagerTest.java index e9d237f9..02c71b03 100644 --- a/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCleanupManagerTest.java +++ b/amazon-kinesis-client/src/test/java/software/amazon/kinesis/leases/LeaseCleanupManagerTest.java @@ -15,6 +15,7 @@ package software.amazon.kinesis.leases; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -83,6 +84,16 @@ public class LeaseCleanupManagerTest { when(leaseCoordinator.updateLease(any(Lease.class), any(UUID.class), any(String.class), any(String.class))).thenReturn(true); } + /** + * Tests subsequent calls to start {@link LeaseCleanupManager}. + */ + @Test + public final void testSubsequentStarts() { + leaseCleanupManager.start(); + Assert.assertTrue(leaseCleanupManager.isRunning()); + leaseCleanupManager.start(); + } + /** * Tests that when both child shard leases are present, we are able to delete the parent shard for the completed * shard case. From b7a5d7968b813523ad44ab16345d297b6f655862 Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 19:31:52 -0400 Subject: [PATCH 8/9] Removing unnecessary code --- .../software/amazon/kinesis/coordinator/Scheduler.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java index db9cc145..ed2f889c 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java @@ -348,12 +348,7 @@ public class Scheduler implements Runnable { log.info("Skipping shard sync per configuration setting (and lease table is not empty)"); } - if (!leaseCleanupManager.isRunning()) { - log.info("Starting LeaseCleanupManager."); - leaseCleanupManager.start(); - } else { - log.info("LeaseCleanupManager is already running. No need to start it"); - } + leaseCleanupManager.start(); // If we reach this point, then we either skipped the lease sync or did not have any exception // for any of the shard sync in the previous attempt. From a48141682cca42a5026d34543e0a7a161dc7e6b6 Mon Sep 17 00:00:00 2001 From: Joshua Kim Date: Mon, 27 Jul 2020 19:39:46 -0400 Subject: [PATCH 9/9] Moving debug to info logs to startup --- .../software/amazon/kinesis/leases/LeaseCleanupManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java index 0fb9ccd6..6e3104ae 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java @@ -82,14 +82,14 @@ public class LeaseCleanupManager { */ public void start() { if (!isRunning) { - log.debug("Starting lease cleanup thread."); + log.info("Starting lease cleanup thread."); completedLeaseStopwatch.reset().start(); garbageLeaseStopwatch.reset().start(); deletionThreadPool.scheduleAtFixedRate(new LeaseCleanupThread(), INITIAL_DELAY, leaseCleanupIntervalMillis, TimeUnit.MILLISECONDS); isRunning = true; } else { - log.debug("Lease cleanup thread already running, no need to start."); + log.info("Lease cleanup thread already running, no need to start."); } }