[英]OrientDB in distributed keeps getting ConcurrentModificationException
我正在使用orientdb社區版2.2.9和pyorient的二進制序列化器(在開發分支中)。
我在AWS上運行了3個節點。
我只使用1個節點作為寫入/讀取的主節點,而其他節點用於讀取和復制。
我已使用以下配置節點:
<properties>
<entry value="2147483647" name="ridBag.embeddedToSbtreeBonsaiThreshold"/>
<entry value="-1" name="index.embeddedToSbtreeBonsaiThreshold"/>
</properties>
我沒有使用Java,所以文檔中的MVCC示例並沒有真正幫助我。
我也沒有使用事務,我使用以下參數啟動服務器:
java -Dcache.level1.enabled=false -Ddb.mvcc=false
我在文檔中讀到你不能再禁用mvcc所以我認為mvcc設置是無用的。
我用rabbitmq和芹菜來排隊任務。 在正常模式下運行orientDB時,當我收到“ConcurrentModificationException”錯誤時,芹菜只會重試該任務並且通常會成功。 在分布式模式下運行時,該任務會一直失敗,因為頂點版本似乎永遠不會匹配。
無論我做什么都沒關系,我一直得到“ ConcurrentModificationException ”。
我可以在配置中看到mvcc仍然啟用。
我以為我嘗試了文檔建議的所有內容,但是在分布式模式下運行的所有細微差別都散布在整個文檔中,而不是在一個地方。 很容易錯過的東西:(
我該如何避免這個問題?
將“writeQuorum”設置為1可以解決此問題。 此外,將“executionMode”作為“異步”運行也會產生問題。
另外,從我的配置中刪除以下內容也可能有助於解決此問題:
....
<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
<parameters>
....
<parameter value="com.orientechnologies.orient.server.distributed.conflict.ODefaultReplicationConflictResolver" name="conflict.resolver.impl"/>
....
</parameters>
</handler>
...
這是default-distributed-db-config.json,它讓我的工作正常。
{
"autoDeploy": true,
"readQuorum": 1,
"writeQuorum": 1,
"executionMode": "synchronous",
"readYourWrites": true,
"servers": {
"*": "master"
},
"clusters": {
"internal": {
},
"*": {
"servers": ["<NEW_NODE>"]
}
}
}
我希望它對某人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.