1

Szenario: Wir haben eine Dynamo-DB-Tabelle, die optimistisches Sperren mit Versionsnummer unterstützt. Zwei gleichzeitige Threads versuchen, zwei verschiedene Einträge mit demselben Primärschlüsselwert für diese Tabelle zu speichern.Dynamo DB Optimistisches Sperrverhalten während der Sicherungsaktion

Frage: Wird die ConditionalCheckFailedException für die letzte Speicheraktion ausgelöst?

+0

bitte folgen Sie Ihre Frage und bitte nachfolgenden Abfragen gefunden werden. lassen Sie mich wissen, ob meine Antwort Ihre Anfrage gelöst hat? –

Antwort

1

Ja, der zweite Thread, der versucht, dieselben Daten einzufügen, würde ConditionalCheckFailedException werfen.

com.amazonaws.services.dynamodbv2.model.ConditionalCheckFailedException 

Sobald das Produkt in der Datenbank gespeichert wird, sollen die nachfolgenden Updates die Versionsanpassung haben mit dem Wert auf DynamoDB Tabelle (d Serverseite Wert).

speichern - für ein neues Element, das DynamoDBMapper weist eine erste Version Nummer 1. Wenn Sie ein Element abrufen, eine oder mehrere seiner Eigenschaften aktualisieren und versuchen, die Änderungen zu speichern, die Operation speichern nur erfolgreich wenn die Versionsnummer auf der Client-Seite und die Server-Seite übereinstimmen. Der DynamoDBMapper erhöht automatisch die Versionsnummer .

1

Wir hatten einen ähnlichen Anwendungsfall in der Vergangenheit, aber in unserem Fall, mehrere Threads zuerst aus der dynamoDB lesen und dann versuchen, die Werte zu aktualisieren.

Endlich wird es eine Änderung in der Version durch die Zeit sie lesen und sie versuchen, das Dokument zu aktualisieren, und wenn Sie den neuesten Wert aus der DynamoDB nicht lesen, dann wird Zwischenaktualisierung verloren (was als Update-Verlust bekannt ist) Ausgabe verweisen aws-docs für mehr Info).

Ich bin mir nicht sicher, ob Sie diesen Anwendungsfall haben oder nicht, aber wenn Sie nur 2 Threads versuchen, den Wert zu aktualisieren, und wenn eine von ihnen eine andere Version erhält, während ihre Anforderung DynamoDB erreicht, erhalten Sie ConditionalCheckFailedException Ausnahme.

Mehr Informationen zu diesem Fehler kann hier http://grepcode.com/file/repo1.maven.org/maven2/com.michelboudreau/alternator/0.10.0/com/amazonaws/services/dynamodb/model/ConditionalCheckFailedException.java

Verwandte Themen