Zufällige Fehler bei der Verwendung von Transaktionen mit Shard-SammlungenJava

Java-Forum
Guest
 Zufällige Fehler bei der Verwendung von Transaktionen mit Shard-Sammlungen

Post by Guest »

Ich habe eine 3-Shard-Mongodb-Instanz, wobei jeder Shard drei Knoten hat, von denen 2 Datenknoten sind, und einen Arbiter. Ich versuche, einen einfachen Test durchzuführen, bei dem ich drei Dokumente in drei Shard-Sammlungen einfüge, jeweils ein Dokument. Wenn ich den Test durchführe, erhalte ich beim Transaktions-Commit manchmal die folgende Fehlermeldung:

Code: Select all

Caused by: com.mongodb.MongoCommandException: Command failed with error 148 (ReadConcernMajorityNotEnabled): 'Transaction was aborted :: caused by :: from shard  :: caused by :: 'prepareTransaction' is not supported for replica sets with arbiters' on server . The full response is {"ok": 0.0, "errmsg": "Transaction was aborted :: caused by :: from shard  :: caused by :: 'prepareTransaction' is not supported for replica sets with arbiters", "code": 148, "codeName": "ReadConcernMajorityNotEnabled", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1736547088, "i": 7}}, "signature": {"hash": {"$binary": {"base64": "6Bkn5UsUlzWG6m4kTubk7T6FcNE=", "subType": "00"}}, "keyId": 7404841909740371970}}, "operationTime": {"$timestamp": {"t": 1736547088, "i": 7}}, "recoveryToken": {"recoveryShardId": ""}}
Da es zufällig auftrat, beschloss ich, 100 Transaktionen nacheinander auszuführen und stellte fest, dass etwa 60–70 % davon mit diesem Fehler fehlschlugen, während der Rest erfolgreich abgeschlossen wurde. Wenn die Aussage des Fehlers zutrifft, sollten dann nicht alle Transaktionen mit demselben Fehlercode fehlschlagen? Mir wurde gesagt, ich solle verschiedene Stufen der Lesebedenken ausprobieren, d. h. Mehrheit und Momentaufnahme, und sogar unterschiedliche Lesepräferenzen, aber nichts funktionierte. Wir sehen immer noch „ReadConcernMajorityNotEnabled“ in der Fehlermeldung, auch wenn wir es explizit in den Transaktionsoptionen festlegen. Nachdem wir gesehen haben, dass einige der Transaktionen abgeschlossen sind, glauben wir, dass es einen Weg geben muss, sie alle zum Laufen zu bringen, sind uns aber nicht sicher, wie.
Eine weitere Sache, die nicht wichtig erscheint, die ich aber trotzdem erwähnen sollte, ist Folgendes Das Rollback-Verhalten der Transaktionen ist wie erwartet. Wenn die Transaktion vor dem Abschluss abgebrochen wird, sehe ich keine Änderung in der Datenbank.
Jeder hat eine Idee, was wir bei der Art der Clusterkonfiguration, die wir haben, möglicherweise nicht richtig machen.
Prost

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post