Запись версии после конфликта

Я использую OrientDB 2.2.35. Вставляю в него какие-то документы, пока не возникнет конфликт. Когда я проверяю версию записи, она не изменилась во время вставки (после конфликта). В моем примере вы можете увидеть версию #18:0 после того, как я вставил ребро (create edge mye from #18:0 to #19:0)

Ошибка:

com.orientechnologies.orient.core.exception.OConcurrentModificationException: Невозможно ОБНОВИТЬ запись #18:0, поскольку версия не является последней. Возможно, вы обновляете старую запись или она была изменена другим пользователем (db=v2 your=v1)

orientdb {db=TestDB}> select * from #18:0

+----+-----+------+----+------------------------------------------------------------------------+
|#   |@RID |@CLASS|id  |out_MyE                                                                 |
+----+-----+------+----+------------------------------------------------------------------------+
|0   |#18:0|MyV   |1   |[#22:0,#22:1,#22:2,#22:3,#22:4,#22:5,#22:6,#22:7,#22:8,#22:9(size=5000)]|
+----+-----+------+----+------------------------------------------------------------------------+

1 item(s) found. Query executed in 0.002 sec(s).
orientdb {db=TestDB}> load record #18:0

DOCUMENT @class:MyV @rid:#18:0 @version:2
+----+-------+------------------------------------------------------------------------+
|#   |NAME   |VALUE                                                                   |
+----+-------+------------------------------------------------------------------------+
|0   |id     |1                                                                       |
|1   |out_MyE|[#22:0,#22:1,#22:2,#22:3,#22:4,#22:5,#22:6,#22:7,#22:8,#22:9(size=5000)]|
+----+-------+------------------------------------------------------------------------+

OK
orientdb {db=TestDB}> create edge mye from #18:0 to #19:0

+----+--------+------+-----+-----+
|#   |@RID    |@CLASS|out  |in   |
+----+--------+------+-----+-----+
|0   |#22:5250|MyE   |#18:0|#19:0|
+----+--------+------+-----+-----+
Created '1' edges in 0.017000 sec(s).

orientdb {db=TestDB}> select * from #18:0

+----+-----+------+----+------------------------------------------------------------------------+
|#   |@RID |@CLASS|id  |out_MyE                                                                 |
+----+-----+------+----+------------------------------------------------------------------------+
|0   |#18:0|MyV   |1   |[#22:0,#22:1,#22:2,#22:3,#22:4,#22:5,#22:6,#22:7,#22:8,#22:9(size=5001)]|
+----+-----+------+----+------------------------------------------------------------------------+

1 item(s) found. Query executed in 0.001 sec(s).
orientdb {db=TestDB}> load record #18:0

DOCUMENT @class:MyV @rid:#18:0 @version:2
+----+-------+------------------------------------------------------------------------+
|#   |NAME   |VALUE                                                                   |
+----+-------+------------------------------------------------------------------------+
|0   |id     |1                                                                       |
|1   |out_MyE|[#22:0,#22:1,#22:2,#22:3,#22:4,#22:5,#22:6,#22:7,#22:8,#22:9(size=5001)]|
+----+-------+------------------------------------------------------------------------+

OK

person Hossein    schedule 13.06.2018    source источник


Ответы (1)


Это распространенная проблема, вызванная неправильным подходом к параллелизму или транзакциям. Вам нужно будет устранить причину и либо написать отказоустойчивый код, либо изменить уровень согласованности графа.

OrientDB | Устранение неполадок OConcurrentModificationException

person dgiannotti    schedule 13.06.2018
comment
Спасибо, но моя проблема в том, почему версия не меняется после create edge mye from #18:0 to #19:0? Версия остается version:2 после прошивки! - person Hossein; 17.06.2018