2017-11-26 2 views
0

Azureでneo4jのハイアベイラビリティクラスターを使用していましたが、これは.netクライアントに問題があります。neo4j .netクライアントとWebクライアントの結果が異なる

Webクライアントを使用してクラスタに接続すると、問題はありません。ノードを照会すると結果が表示されます。しかし、同じクエリで.netクライアントを使用すると、一部のノードが見つかりません。

私たちは、Webクライアントからノードを数えてみましたし、.NETクライアントは、私は、クラスタ内の3つのVMの1を再起動し、問題が解決した620

を返しながら、結果は850です。 何が間違っているのかわからず、私たちのサービスが信頼できないようにしたくありません!

あなたはどこに問題があると思いますか?

///アップデート1

我々は、さまざまなクエリの様々な問題に直面しているが、ノードの数を返し最も簡単なものである:

match (t) 
return count(t) 

と我々が使用しているC#の同等があります:

client.Cypher 
    .Match("(t)") 
    .Return<int>("count (t)") 

Cypherクエリは850を返し、C#コードは620ノードを返しました。いずれかのマシンを再起動すると、結果は850と同様になりましたが、しばらくしてから、Webクライアントから返されたノード数(Cypherクエリ)が857になり、C#クライアントコードが856を返します。 一方、 Webクライアントがうまく動作している間にc#クライアントで新しいノードを追加する際の問題。 VMが再起動しても問題は解決しました。

.NETクライアントがneo4jclient

///でアップデート2

私たちは、ノード数を取得するためのボルトを使用してNeo4jDotNetDriverテストを試してみましたが、それが正常に動作します。すべてのノードを削除して両方のノード数をカウントしようとしましたが、Neo4jClientはボルトに接続されたNeo4jDotNetDriverが正常に動作し、0を返している間も857を返します。

neo4jclientでいくつかのノードを作成しようとしました。いくつかの間に作成されます!

+0

実行中のCypherクエリとC#コードを共有してください。ありがとう! –

+0

また、どのクライアント! –

+0

あなたの質問への回答で質問を更新しました@BrunoPeres –

答えて

0

OK 多くのテストの後、私たちは最終的に問題があると考えました。 クライアントに問題はありません。 前述のとおり、3台のVMでAzure上のNeo4j高可用性クラスタを使用しています。私たちは3つの異なるPCから直接REST APIを呼び出すことを試みました。私たちは、間違った応答と2つの他の正しい応答を得ていました。これは、クラスタ内の異なるマシンからの要求が応答されていることを疑うところです。そこで、Neo4j Cypher Shellを使用して各マシンを個別に照会しようとしましたが、いずれかのマシンが他の2つのマシンと同期していないことが判明しました。 この問題に関するいくつかの調査の結果、これはneo4j設定のバグであることがわかりました。ha.pull_intervalしばらくすると同期が外れてしまいます。 この間隔を10に設定し、マシンを再起動しました。

あなたはこの問題hereについての詳細を見つけることができる、とhere

API呼び出しは1つのクライアントから常に同期機のうちにリダイレクトされた理由を私は知らない、と誰かが知っていたならば、それは素晴らしいことですなぜ。

関連する問題