Class DynamoDBLockProvider
java.lang.Object
net.javacrumbs.shedlock.provider.dynamodb2.DynamoDBLockProvider
- All Implemented Interfaces:
net.javacrumbs.shedlock.core.LockProvider
public class DynamoDBLockProvider
extends Object
implements net.javacrumbs.shedlock.core.LockProvider
Distributed lock using DynamoDB. Depends on
software.amazon.awssdk:dynamodb.
It uses a table with the following structure:
{
"_id" : "lock name",
"lockUntil" : ISODate("2017-01-07T16:52:04.071Z"),
"lockedAt" : ISODate("2017-01-07T16:52:03.932Z"),
"lockedBy" : "host name"
}
lockedAt and lockedBy are just for troubleshooting
and are not read by the code.
- Attempts to insert a new lock record.
- We will try to update lock record using
filter _id == :name AND lock_until <= :now. - If the update succeeded, we have the lock. If the update failed (condition check exception) somebody else holds the lock.
- When unlocking,
lock_untilis set to now or lockAtLeastUntil whichever is later.
-
Constructor Summary
ConstructorsConstructorDescriptionDynamoDBLockProvider(software.amazon.awssdk.services.dynamodb.DynamoDbClient dynamoDbClient, String tableName) Uses DynamoDB to coordinate locks -
Method Summary
-
Constructor Details
-
DynamoDBLockProvider
public DynamoDBLockProvider(software.amazon.awssdk.services.dynamodb.DynamoDbClient dynamoDbClient, String tableName) Uses DynamoDB to coordinate locks- Parameters:
dynamoDbClient- v2 of DynamoDB clienttableName- the lock table name
-
-
Method Details
-
lock
public Optional<net.javacrumbs.shedlock.core.SimpleLock> lock(net.javacrumbs.shedlock.core.LockConfiguration lockConfiguration) - Specified by:
lockin interfacenet.javacrumbs.shedlock.core.LockProvider
-