簡體   English   中英

分布式中的OrientDB不斷獲取ConcurrentModificationException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM