auftreten können OptimisticLockException wenn app srv Isolationsstufe READ COMMITTED festgelegt ist?

StackOverflow https://stackoverflow.com/questions/3890460

Frage

Ich bin mit Websphere Application Server 7.0.0.0.9 mit; OpenJPA 1.2.3-SNAPSHOT‘. Ich habe Set Eigentum von JDBC-Datenquelle webSphereDefaultIsolationLevel = 2 (READ COMMITTED). Ich habe diese Frage, weil mein Verständnis der OptimasticLockException ist tritt auf, wenn es Rennen ist die gleiche Zeile von mehreren Thread zu begehen. Aber ich denke, diese Situation sollte nie auftreten, wenn die Isolationsstufe App-Server eingestellt ist VERPFLICHTET zu lesen.

Dies ist Ausnahme erhalte ich ..

<openjpa-1.2.3-SNAPSHOT-r422266:907835 fatal store error> org.apache.openjpa.persistence.OptimisticLockException: An optimistic lock violation was detected when flushing object instance 
War es hilfreich?

Lösung

  

Ich habe diese Frage, weil mein Verständnis der OptimisticLockException ist tritt auf, wenn es Rennen ist die gleiche Zeile von mehrere Thread zu begehen.

Ja, es wird ein OptimisticLockException geworfen werden, wenn das Version Attribut eines Unternehmens höher ist (das heißt durch eine andere Transaktion geändert wurde) begehen Zeit, als wenn sie gelesen wurde. Dies wird durch das folgende Bild (entlehnt JPA 2.0 Concurrency und Arretieren ) dargestellt:

alt text

  

Aber ich denke, diese Situation sollte nie auftreten, wenn die Isolationsstufe App-Server eingestellt ist VERPFLICHTET zu lesen.

Warum? Wenn ein ENGAGIERTER Isolationsstufe, nicht wiederholbar liest auftreten kann, aber:

  1. Dies wird nicht im Speicher Darstellung von Daten (e1 in dem obigen Beispiel) beeinflussen
  2. Die meisten der Zeit, die Sie nicht Daten wieder lesen
    • Und selbst wenn Sie tun (und ein nicht wiederholbares Lesedurchführen), könnte ein Unternehmen noch von einem anderen Thread geändert, bevor Sie Änderungen.

Um es zusammenzufassen, Committed Read wird nicht OptimisticLockException verhindern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top