次のシナリオを考えてみましょう。
2つのHazelcastノードがあります。1つは停止し、もう1つは非常に重い負荷で実行されています。
これで、2番目のノードが起動します。アプリケーションが起動し、そのHazelcastインスタンスが最初のインスタンスに接続します。Hazelcastはデータの再パーティション化を開始します。2ノードの場合、これは基本的に、IMapの各エントリが新しいノードにコピーされ、2つのノードが任意にマスター/バックアップに割り当てられることを意味します。
問題: このプロセス中に最初のノードが停止し、レプリケーションが完全に実行されない場合、IMapコンテンツとITopicサブスクリプションの一部が失われる可能性があります。
質問:再パーティション化プロセスが終了し、最初のノードを安全にオフにできることを確認するにはどうすればよいですか?
(セットアップ全体は、現在のアプリケーションの状態を維持しながら、ダウンタイムなしでソフトウェアの更新を有効にするように作成されています)。
getPartitionService()。addMigrationListener(...)を使用しようとしましたが、リスナーが完全な移行プロセスに接続されていないようです。代わりに、レプリケーションのチャンクごとに、migrationStarted()/ migrationCompleted()を呼び出す数十から数百の呼び出しを取得します。