Cleaner implementation of list all resources
This commit is contained in:
parent
7816727b3a
commit
84d2f1bcd8
3 changed files with 19 additions and 44 deletions
|
|
@ -55,27 +55,14 @@ public class LeaseTableManager extends AWSResourceManager {
|
|||
}
|
||||
|
||||
public List<String> _getAllResourceNames() throws Exception {
|
||||
List<String> tableNames = new ArrayList<>();
|
||||
ListTablesRequest request = ListTablesRequest.builder().build();
|
||||
ListTablesResponse response = null;
|
||||
String startTableName = null;
|
||||
|
||||
// Continue while paginated call is still returning table names
|
||||
while(response == null || response.lastEvaluatedTableName() != null) {
|
||||
if (startTableName != null) {
|
||||
request = ListTablesRequest.builder().exclusiveStartTableName(startTableName).build();
|
||||
}
|
||||
try {
|
||||
response = FutureUtils.resolveOrCancelFuture(dynamoClient.listTables(request), Duration.ofSeconds(60));
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
throw new Exception("Error listing all lease tables");
|
||||
}
|
||||
// Add all table names to list
|
||||
tableNames.addAll(response.tableNames());
|
||||
// Set startTableName for next call to be the last table name evaluated in current call
|
||||
startTableName = response.lastEvaluatedTableName();
|
||||
}
|
||||
return tableNames;
|
||||
ListTablesRequest listTableRequest = ListTablesRequest.builder().build();
|
||||
List<String> allTableNames = new ArrayList<>();
|
||||
ListTablesResponse result = null;
|
||||
do {
|
||||
result = FutureUtils.resolveOrCancelFuture(dynamoClient.listTables(listTableRequest), Duration.ofSeconds(60));
|
||||
allTableNames.addAll(result.tableNames());
|
||||
listTableRequest = ListTablesRequest.builder().exclusiveStartTableName(result.lastEvaluatedTableName()).build();
|
||||
} while (result.lastEvaluatedTableName() != null);
|
||||
return allTableNames;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package software.amazon.kinesis.utils;
|
|||
import lombok.Value;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import software.amazon.awssdk.services.dynamodb.model.ListTablesRequest;
|
||||
import software.amazon.awssdk.services.dynamodb.model.ListTablesResponse;
|
||||
import software.amazon.awssdk.services.kinesis.KinesisAsyncClient;
|
||||
import software.amazon.awssdk.services.kinesis.model.CreateStreamRequest;
|
||||
import software.amazon.awssdk.services.kinesis.model.DeleteStreamRequest;
|
||||
|
|
@ -63,27 +64,15 @@ public class StreamExistenceManager extends AWSResourceManager {
|
|||
}
|
||||
|
||||
public List<String> _getAllResourceNames() throws Exception {
|
||||
List<String> streamNames = new ArrayList<>();
|
||||
ListStreamsRequest request = ListStreamsRequest.builder().build();
|
||||
ListStreamsResponse response = null;
|
||||
String startStreamName = null;
|
||||
|
||||
// Continue while paginated call is still returning stream names
|
||||
while(response == null || response.hasMoreStreams()) {
|
||||
if (startStreamName != null) {
|
||||
request = ListStreamsRequest.builder().exclusiveStartStreamName(startStreamName).build();
|
||||
}
|
||||
try {
|
||||
response = FutureUtils.resolveOrCancelFuture(client.listStreams(request), Duration.ofSeconds(60));
|
||||
} catch (Exception e) {
|
||||
throw new Exception("Error listing all lease tables");
|
||||
}
|
||||
// Add all stream names to list
|
||||
streamNames.addAll(response.streamNames());
|
||||
// Set startTableName for next call to be the last table name evaluated in current call
|
||||
startStreamName = response.nextToken();
|
||||
}
|
||||
return streamNames;
|
||||
ListStreamsRequest listStreamRequest = ListStreamsRequest.builder().build();
|
||||
List<String> allStreamNames = new ArrayList<>();
|
||||
ListStreamsResponse result = null;
|
||||
do {
|
||||
result = FutureUtils.resolveOrCancelFuture(client.listStreams(listStreamRequest), Duration.ofSeconds(60));
|
||||
allStreamNames.addAll(result.streamNames());
|
||||
listStreamRequest = ListStreamsRequest.builder().exclusiveStartStreamName(result.nextToken()).build();
|
||||
} while (result.hasMoreStreams());
|
||||
return allStreamNames;
|
||||
}
|
||||
|
||||
public void checkStreamAndCreateIfNecessary(String streamName) {
|
||||
|
|
|
|||
|
|
@ -99,7 +99,6 @@ public class TestConsumer {
|
|||
throw e;
|
||||
} finally {
|
||||
// Clean up resources created
|
||||
Thread.sleep(TimeUnit.SECONDS.toMillis(30));
|
||||
deleteResources(streamExistenceManager, leaseTableManager);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue