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?

preguntada hace 2 años810 visualizaciones
1 Respuesta
1
Respuesta aceptada

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
EXPERTO
respondido hace 2 años
  • When we use conditional expression in save operation (with Save expression), does the read for that conditional expression is strongly consistent?

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas