単一のマスター インスタンスと組み込みの HA インスタンスを備えた非常にシンプルな Neo4j HA セットアップがあり、これをバッチ データ ロードに使用したいと考えています。マスター インスタンスの構成は次のとおりです (Windows サービスとして "通常" 起動するもの)。
node_auto_indexing=true
node_keys_indexable=key,entity,annotation
relationship_auto_indexing=true
relationship_keys_indexable=key, weight, label
keep_logical_logs=true
online_backup_enabled=true
ha.server_id=1
ha.initial_hosts=:5001
ha.server=0.0.0.0:6001
ha.cluster_server=:5001
ha.pull_interval=10
ha.tx_push_factor=0
ha.tx_push_strategy=fixed
cypher_parser_version=2.0
remote_shell_enabled=true
remote_shell_port=1377
org.neo4j.server.database.mode=HA
組み込みのものをオンデマンドで開始および停止できるようにしたい。Javaアプリケーションにロードする構成は次のとおりです。
node_auto_indexing=true
node_keys_indexable=key,annotation
relationship_auto_indexing=true
relationship_keys_indexable=key, weight, label
keep_logical_logs=true
org.neo4j.server.database.mode=HA
ha.server_id=2
ha.slave_only=true
ha.initial_hosts=:5001
ha.server=:6002
ha.cluster_server=:5002
ha.pull_interval=10
cypher_parser_version=2.0
アイデアは、最初の (Windows サービス) インスタンスを単一/スタンドアロン ノードとして起動し、必要に応じてバッチ ローダーを起動できるようにすることです。
問題
Windows サービスを正常に起動し、通常どおりクエリを実行できます。アプリケーションを起動すると、問題なく接続され、スレーブ ノードの役割を果たします。問題なくデータをロードでき、マスター ノードは同期しているようで、正常に動作しています。現在、Java アプリケーションが何らかの理由でクラッシュするか終了してシャットダウンした場合、マスター インスタンスは動作を停止し、Cypher クエリに対して次のトレースを返します。
TransactionFailureException
Timeout waiting for cluster to elect master
StackTrace:
org.neo4j.kernel.ha.HighlyAvailableGraphDatabase.beginTx(HighlyAvailableGraphDatabase.java:207)
org.neo4j.kernel.TransactionBuilderImpl.begin(TransactionBuilderImpl.java:39)
org.neo4j.kernel.InternalAbstractGraphDatabase.beginTx(InternalAbstractGraphDatabase.java:882)
org.neo4j.cypher.ExecutionEngine.prepare(ExecutionEngine.scala:102)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:70)
org.neo4j.cypher.ExecutionEngine.execute(ExecutionEngine.scala:85)
org.neo4j.cypher.javacompat.ExecutionEngine.execute(ExecutionEngine.java:80)
org.neo4j.server.rest.web.CypherService.cypher(CypherService.java:95)
java.lang.reflect.Method.invoke(Unknown Source)
org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)
構成で何か間違ったことをしましたか?
ところで: 2 番目のインスタンスを再起動すると、マスター インスタンスは「通常」に戻ります。