in src/main/java/com/amazonaws/services/dynamodbv2/AmazonDynamoDBLockClient.java [264:294]
public AmazonDynamoDBLockClient(final AmazonDynamoDBLockClientOptions amazonDynamoDBLockClientOptions) {
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getDynamoDBClient(), "DynamoDB client object cannot be null");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getTableName(), "Table name cannot be null");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getOwnerName(), "Owner name cannot be null");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getTimeUnit(), "Time unit cannot be null");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getPartitionKeyName(), "Partition Key Name cannot be null");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getSortKeyName(), "Sort Key Name cannot be null (use Optional.absent())");
Objects.requireNonNull(amazonDynamoDBLockClientOptions.getNamedThreadCreator(), "Named thread creator cannot be null");
this.dynamoDB = amazonDynamoDBLockClientOptions.getDynamoDBClient();
this.tableName = amazonDynamoDBLockClientOptions.getTableName();
this.locks = new ConcurrentHashMap<>();
this.sessionMonitors = new ConcurrentHashMap<>();
this.ownerName = amazonDynamoDBLockClientOptions.getOwnerName();
this.leaseDurationInMilliseconds = amazonDynamoDBLockClientOptions.getTimeUnit().toMillis(amazonDynamoDBLockClientOptions.getLeaseDuration());
this.heartbeatPeriodInMilliseconds = amazonDynamoDBLockClientOptions.getTimeUnit().toMillis(amazonDynamoDBLockClientOptions.getHeartbeatPeriod());
this.partitionKeyName = amazonDynamoDBLockClientOptions.getPartitionKeyName();
this.sortKeyName = amazonDynamoDBLockClientOptions.getSortKeyName();
this.namedThreadCreator = amazonDynamoDBLockClientOptions.getNamedThreadCreator();
this.holdLockOnServiceUnavailable = amazonDynamoDBLockClientOptions.getHoldLockOnServiceUnavailable();
if (amazonDynamoDBLockClientOptions.getCreateHeartbeatBackgroundThread()) {
if (this.leaseDurationInMilliseconds < 2 * this.heartbeatPeriodInMilliseconds) {
throw new IllegalArgumentException("Heartbeat period must be no more than half the length of the Lease Duration, "
+ "or locks might expire due to the heartbeat thread taking too long to update them (recommendation is to make it much greater, for example "
+ "4+ times greater)");
}
this.backgroundThread = Optional.of(this.startBackgroundThread());
} else {
this.backgroundThread = Optional.empty();
}
}