2016-06-07 9 views
0

Wir bekommen OConcurrentModificationException in Single Threaded-Umgebung auch nach Local Cache zu deaktivieren.OConcurrentModificationException In Einzel Thema

ODatabaseDocumentTx conn = new ODatabaseDocumentTx (""); conn.getLocalCache(). SetEnable (false);

Ausgabe ist nicht konsistent, so nicht in der Lage wir fortfahren, ist unterhalb der Log-Trace für die genannten Exception.It für UPDATE und DELETE geschieht Betrieb.

com.orientechnologies.orient.core.exception.OConcurrentModificationException: Der Datensatz # 35: 214 kann nicht gelöscht werden, da die Version nicht die neueste ist. Wahrscheinlich löschen Sie einen alten Datensatz oder es wird von einem anderen Benutzer geändert worden (db = v11 Ihr = v10) bei com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.doDeleteRecord (OAbstractPaginatedStorage.java:1672) ~ [orientdb-core.jar: 2.1-rc3] bei com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.deleteRecord (OAbstractPaginatedStorage.java:773) ~ [orientdb-core.jar: 2.1-rc3] bei com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.commitEntry (OAbstractPaginatedStorage.java:2053) ~ [orientdb-core.jar: 2.1-rc3] bei com.orientechnologies.orient.core.storage.impl .local.OAbstractPaginatedStorage.commit (OAbstractPaginatedStorage.java:925) ~ [orientdb-core.jar: 2.1-rc3] unter com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit (OTransactionOptimistic.java: 590) ~ [orientdb-core.jar: 2.1-rc3] unter com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit (OTransactionOptimistic.java:149) ~ [orientdb-core.jar: 2.1-rc3] um com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit (OTransactionOptimistic.java:129) ~ [Orientdb-core.jar: 2.1-RC3]

+0

Könnten Sie Ihren Code schreiben? Haben Sie die Dokumentation (http://orientdb.com/docs/2.1/Concurrency.html) –

Antwort

0

Grund genau in Ihrem Code: conn.getLocalCache().setEnable(false); dies nie tun)).

+0

Danke für Info gesehen, zunächst habe ich versucht, ohne diese conn.getLocalCache() setEnable (false). Code, Aber es wurde wiederholt, also haben wir diesen Code hinzugefügt, um es zu vermeiden, können Sie erklären, warum wir es nicht tun sollten und was möglichen Grund für die erwähnte Ausnahme sein könnte. –

+0

Ich nehme an, Sie haben Methoden, die andere Methoden aufrufen, aber sowohl Top-Level-und Low-Level-Methoden verwenden eine Datenbank. Daher modifizieren beide Methoden dasselbe Dokument, aber verschiedene Instanzen dieses Dokuments, die CME verursacht haben. Um diese Situation zu vermeiden, schlage ich vor, dass Sie keine direkte Verbindung zur Datenbankinstanz herstellen, sondern stattdessen den Verbindungspool verwenden. Sie können mehr über die Vorteile der Nutzung des Verbindungspools dort lesen http://andreylomakin.blogspot.com/2016/05/never-use-long-living-database- instances.html. –