1

私は orientdb community edition 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がまだ有効になっていることが構成でわかります。

ドキュメントで提案されていることはすべて試したと思いますが、分散モードでの実行のすべてのニュアンスは、1 か所ではなく、ドキュメント全体に散らばっています。何かを見逃すのはとても簡単です:(

この問題を回避するにはどうすればよいですか?

4

1 に答える 1

0

「writeQuorum」を1に設定すると、この問題が修正されました。また、「executionMode」を「asynchronous」として実行すると、問題が発生しました。

また、私の設定から以下を削除することも、この問題を解決するのに役立ったかもしれません:

....
<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>"]
    }
  }
}

誰かの役に立てば幸いです。

于 2016-09-15T10:52:44.620 に答える