/ / RavenDB - Parallelitätsausnahme ohne optimistische Parallelität - Ravendb, Optimistisch-Parallelität

RavenDB - Concurrency Exception ohne optimistische Concurrency - ravendb, optimistic-concurrency

In unserer Raven DB-Instanz erhalten wir regelmäßig Parallelitätsausnahmen. Das hat mich immer verwirrt, da wir keine optimistische Parallelität aktiviert haben.

Google sagt mir das Es gibt ein Szenario wo Parallelitätsausnahmen ausgelöst werden könnenohne optimistische Parallelität aktiviert - wenn Sie einen Index haben, der LoadDocument () für ein Dokument dieses Typs aufruft Dies ist in der Tat bei unserer Codebase der Fall.

Der Thread, mit dem ich gerade verlinkt habe, schlägt jedoch keine Abhilfemaßnahme vor. Was muss ich tun, wenn eine Parallelitätsausnahme auftritt? Sollte die Logik erneut versuchen? Oder soll ich noch etwas tun?

Antworten:

0 für die Antwort № 1

Eine Parallelitätsausnahme wird ausgelöst, wenn zwei Threads das gleiche Dokument gleichzeitig physisch ändern. Ein Thread gewinnt, der andere erhält eine Parallelitätsausnahme.

Es liegt an Ihnen, zu entscheiden, was mit diesem Szenario zu tun ist.

Auswahl was du hast kann machen:

  1. Nichts. Unbehandelte Ausnahme. Nicht anders als wenn das Netzwerk für eine Minute abbricht
  2. Wiederholung. Letztes gewinnt. Ihr fehlerhaftes Dokument war das letzte Mal. Wiederholen Sie die Anforderung, um alle Änderungen zu überschreiben.
  3. Benachrichtigen. Fange die Ausnahme. Informieren Sie den Benutzer, dass die Anforderung nicht erfolgreich war, und überprüfen Sie die Änderungen mit der aktuellen Version des Dokuments.
  4. Verschmelzen. Vergleichen Sie die beiden Dokumente und fügen Sie sie zusammen
  5. Hand verschmelzen. Präsentieren Sie dem Benutzer die Benutzeroberfläche, in der beide Dokumente angezeigt werden, und ermöglicht dem Benutzer die Durchführung einer dreifachen Zusammenführung

Sie könnten auch ein intelligentes System fürDies tun. Parallelitätsausnahme, versuchen Sie die automatische Zusammenführung, wenn gut, alles gut. Die automatische Zusammenführung schlägt fehl, und Sie erhalten eine Benachrichtigung an den Benutzer. "Leider konnten wir Ihre Änderungen nicht akzeptieren. Klicken Sie hier, um die Änderungen zu vergleichen."