From 41c08c3b04487cd44efb4909c644034bd09c7fd9 Mon Sep 17 00:00:00 2001 From: Cai41 Date: Wed, 22 Apr 2020 18:11:51 -0700 Subject: [PATCH] Also consider TableStatus.UPDATING status --- .../kinesis/leases/impl/LeaseManager.java | 3 ++- .../impl/LeaseManagerIntegrationTest.java | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java b/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java index 0c70aaa7..00a3e755 100644 --- a/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java +++ b/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseManager.java @@ -162,7 +162,8 @@ public class LeaseManager implements ILeaseManager { */ @Override public boolean leaseTableExists() throws DependencyException { - return TableStatus.ACTIVE == tableStatus(); + TableStatus tableStatus = tableStatus(); + return TableStatus.ACTIVE == tableStatus || TableStatus.UPDATING == tableStatus; } private TableStatus tableStatus() throws DependencyException { diff --git a/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java b/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java index c04ee44f..6174cdf0 100644 --- a/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java +++ b/src/test/java/com/amazonaws/services/kinesis/leases/impl/LeaseManagerIntegrationTest.java @@ -296,6 +296,29 @@ public class LeaseManagerIntegrationTest extends LeaseIntegrationTest { Assert.assertTrue(manager.waitUntilLeaseTableExists(1, 1)); } + @Test + public void testWaitUntilLeaseTableExistsUpdatingStatus() throws LeasingException { + AmazonDynamoDBClient ddbMock = Mockito.mock(ddbClient.getClass()); + DescribeTableResult result = Mockito.mock(DescribeTableResult.class); + TableDescription description = Mockito.mock(TableDescription.class); + Mockito.when(description.getTableStatus()).thenReturn(TableStatus.UPDATING.name()); + Mockito.when(result.getTable()).thenReturn(description); + Mockito.when(ddbMock.describeTable(Mockito.any(DescribeTableRequest.class))).thenReturn(result); + KinesisClientLeaseManager manager = new KinesisClientLeaseManager("existing_table", ddbMock, true, + KinesisClientLibConfiguration.DEFAULT_DDB_BILLING_MODE) { + + @Override + long sleep(long timeToSleepMillis) { + Assert.fail("Should not sleep"); + return 0L; + } + + }; + + + Assert.assertTrue(manager.waitUntilLeaseTableExists(1, 1)); + } + @Test public void testWaitUntilLeaseTableExistsPayPerRequest() throws LeasingException { AmazonDynamoDBClient ddbMock = Mockito.mock(ddbClient.getClass());