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?

質問済み 2年前810ビュー
1回答
1
承認された回答

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
エキスパート
回答済み 2年前
  • When we use conditional expression in save operation (with Save expression), does the read for that conditional expression is strongly consistent?

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ