分散アプリケーションのコンテキストで実行すると、net_adm:ping/1 に関して異なる動作が発生します。
起動時に既知のノードに ping を実行し、接続されたノードのメッシュ内のすべてのノードを検出するアプリケーションがあります。
このアプリケーションを単一ノード (非分散構成) で開始すると、net_adm:ping/1 の後に nodes/0 が続き、4 つの他のノードが報告されます (これは正しいです)。4 つのノードは 2 つの異なる物理マシン上にあるため、返されるのは次の n1@machine_1、n2@machine_2、n3@machine_2、n4@machine_1 です (実際には IP アドレスが返され、machine_x ではありません)。
2 ノード分散アプリケーションの一部である場合、アプリケーションが開始されるノードで、net_adm:ping/1 の後に nodes/0 が続き、各マシン (n1@machine1、n2@machine2) から 1 つずつ、2 つのノードが報告されます。約 750 ミリ秒の遅延の後、nodes/0 への 2 回目の呼び出しにより、正しい 5 つのノードが検出されます。私のアプリケーションが動作するためには、欠落している 3 つのノードのうち 2 つが必要です。
R15B02を使用しています
メッシュ内の一部のノードが分散アプリケーション構成に参加している場合、推移的なノード検出プロセスに関する遅延は異なることが知られていますか?