1

Scénario: Nous avons une table DB Dynamo soutien verrouillage Optimiste avec numéro de version. Deux threads simultanés tentent d'enregistrer deux entrées différentes avec la même valeur de clé primaire pour cette table.Dynamo DB Optimiste Comportement de verrouillage pendant la sauvegarde d'action

Question: Est-ce que ConditionalCheckFailedException sera lancé pour la dernière action de sauvegarde?

+0

s'il vous plaît suivre votre question et poser les requêtes suivantes. laissez-moi savoir si ma réponse a résolu votre requête? –

Répondre

1

Oui, le deuxième thread qui essaye d'insérer les mêmes données lancerait.

com.amazonaws.services.dynamodbv2.model.ConditionalCheckFailedException 

Dès que l'élément est enregistré dans la base de données, les mises à jour suivantes devraient avoir la version correspondant à la valeur sur la table DynamoDB (à savoir la valeur côté serveur).

sauver - Pour un nouvel élément, le DynamoDBMapper attribue une première version numéro 1. Si vous récupérez un élément, mettez à jour une ou plusieurs de ses propriétés et tenter d'enregistrer les modifications, l'opération de sauvegarde ne réussit que si le numéro de version sur le côté client et le match côté serveur . Le DynamoDBMapper incrémente automatiquement le numéro de version .

1

Nous avions un cas d'utilisation similaire dans le passé mais dans notre cas, plusieurs threads lisent d'abord à partir de la dynamoDB, puis essayent de mettre à jour les valeurs. Donc, enfin, il y aura des changements dans la version au moment où ils lisent et ils essaieront de mettre à jour le document et si vous ne lisez pas la dernière valeur de DynamoDB, alors la mise à jour intermédiaire sera perdue question référez-vous aws-docs pour plus d'informations). Je ne suis pas sûr, si vous avez ce cas d'utilisation ou non mais si vous avez simplement 2 threads essayant de mettre à jour la valeur et si l'un d'entre eux obtient une version différente alors que leur demande atteint DynamoDB, vous obtiendrez ConditionalCheckFailedException exception.

Plus d'informations sur cette erreur se trouve ici http://grepcode.com/file/repo1.maven.org/maven2/com.michelboudreau/alternator/0.10.0/com/amazonaws/services/dynamodb/model/ConditionalCheckFailedException.java