Are Dynamodb conditional expressions consistent across nodes?

0

I am trying to lock an object in a table with a function that looks like this:

def lock(): dynamodb = boto3.resource('dynamodb', endpoint_url="http://localhost:8000")

table = dynamodb.Table('table')

response = table.update_item(
    Key={
        'id': "id1",
        'created_at': "2022-02-06T12:07:45.602721617Z"
    },
    UpdateExpression="SET #O.L  = :locked",
    ConditionExpression="object.locked <> :locked",
    ExpressionAttributeValues={':locked': True},
    ReturnValues="UPDATED_NEW"
)
return response

Given that several workers might be trying to get the lock at the same time and there is no way to have consistent write in Dynamodb. Is it possible for multiple workers to acquire the lock at the same time?

demandé il y a 2 ans810 vues
1 réponse
1
Réponse acceptée

All writes to DynamoDB are singleton and consistent. There is only a chance for a single thread to acquire the lock, all others will fail. More here.

Reads on the other hand can be both Eventually Consistent or optionally Strongly Consistent. More here.

profile pictureAWS
EXPERT
répondu il y a 2 ans
  • When we use conditional expression in save operation (with Save expression), does the read for that conditional expression is strongly consistent?

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions