Check if Table Exists Before Creation
Attempt to see if the lease table exists before attempting to create it. Related/Fixes PR#67 - https://github.com/awslabs/amazon-kinesis-client/pull/67
This commit is contained in:
parent
2104f358c6
commit
8fc5dd5862
1 changed files with 19 additions and 8 deletions
|
|
@ -103,7 +103,16 @@ public class LeaseManager<T extends Lease> implements ILeaseManager<T> {
|
||||||
verifyNotNull(readCapacity, "readCapacity cannot be null");
|
verifyNotNull(readCapacity, "readCapacity cannot be null");
|
||||||
verifyNotNull(writeCapacity, "writeCapacity cannot be null");
|
verifyNotNull(writeCapacity, "writeCapacity cannot be null");
|
||||||
|
|
||||||
boolean tableDidNotExist = true;
|
try {
|
||||||
|
if (tableStatus() != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (DependencyException de) {
|
||||||
|
//
|
||||||
|
// Something went wrong with DynamoDB
|
||||||
|
//
|
||||||
|
LOG.error("Failed to get table status for " + table, de);
|
||||||
|
}
|
||||||
CreateTableRequest request = new CreateTableRequest();
|
CreateTableRequest request = new CreateTableRequest();
|
||||||
request.setTableName(table);
|
request.setTableName(table);
|
||||||
request.setKeySchema(serializer.getKeySchema());
|
request.setKeySchema(serializer.getKeySchema());
|
||||||
|
|
@ -117,14 +126,14 @@ public class LeaseManager<T extends Lease> implements ILeaseManager<T> {
|
||||||
try {
|
try {
|
||||||
dynamoDBClient.createTable(request);
|
dynamoDBClient.createTable(request);
|
||||||
} catch (ResourceInUseException e) {
|
} catch (ResourceInUseException e) {
|
||||||
tableDidNotExist = false;
|
|
||||||
LOG.info("Table " + table + " already exists.");
|
LOG.info("Table " + table + " already exists.");
|
||||||
|
return false;
|
||||||
} catch (LimitExceededException e) {
|
} catch (LimitExceededException e) {
|
||||||
throw new ProvisionedThroughputException("Capacity exceeded when creating table " + table, e);
|
throw new ProvisionedThroughputException("Capacity exceeded when creating table " + table, e);
|
||||||
} catch (AmazonClientException e) {
|
} catch (AmazonClientException e) {
|
||||||
throw new DependencyException(e);
|
throw new DependencyException(e);
|
||||||
}
|
}
|
||||||
return tableDidNotExist;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -132,6 +141,10 @@ public class LeaseManager<T extends Lease> implements ILeaseManager<T> {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean leaseTableExists() throws DependencyException {
|
public boolean leaseTableExists() throws DependencyException {
|
||||||
|
return TableStatus.ACTIVE == tableStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private TableStatus tableStatus() throws DependencyException {
|
||||||
DescribeTableRequest request = new DescribeTableRequest();
|
DescribeTableRequest request = new DescribeTableRequest();
|
||||||
|
|
||||||
request.setTableName(table);
|
request.setTableName(table);
|
||||||
|
|
@ -144,19 +157,17 @@ public class LeaseManager<T extends Lease> implements ILeaseManager<T> {
|
||||||
LOG.debug(String.format("Got ResourceNotFoundException for table %s in leaseTableExists, returning false.",
|
LOG.debug(String.format("Got ResourceNotFoundException for table %s in leaseTableExists, returning false.",
|
||||||
table));
|
table));
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
return false;
|
|
||||||
} catch (AmazonClientException e) {
|
} catch (AmazonClientException e) {
|
||||||
throw new DependencyException(e);
|
throw new DependencyException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
String tableStatus = result.getTable().getTableStatus();
|
TableStatus tableStatus = TableStatus.fromValue(result.getTable().getTableStatus());
|
||||||
|
|
||||||
if (LOG.isDebugEnabled()) {
|
if (LOG.isDebugEnabled()) {
|
||||||
LOG.debug("Lease table exists and is in status " + tableStatus);
|
LOG.debug("Lease table exists and is in status " + tableStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TableStatus.ACTIVE.name().equals(tableStatus);
|
return tableStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue