Solr: ローカルノードのリーダネス状態を取得
トピック作成者:ks-solruserml-bot (2024/05/28 20:10 投稿)
6
(The bot translated the original post https://lists.apache.org/thread/tpv6h61vqrpll21mmokp2jtp3l0h0zbn into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
こんにちは、Solrの皆さん、
カスタムのUpdateProcessorを記述しています。これはカスタムプラグインの一部であり、いくつかのコードをシャードリーダーでのみ実行する必要があります。これはプラグインなので、DistributedUpdateProcessor.isLeader()メソッドにアクセスできません。このメソッドは公開されていません。
現時点では、以下のコードをコピーして貼り付けていますが、もっと良い方法があるはずだと考えています。
private boolean getIsLeader() {
final boolean isZkAware = req.getCore().getCoreContainer().isZooKeeperAware();
if (!isZkAware) {
return getNonZkLeaderAssumption(req);
}
String shardId = cloudDesc.getShardId();
try {
Replica leaderReplica = zkController.getZkStateReader().getLeaderRetry(collection, shardId);
return leaderReplica.getName().equals(cloudDesc.getCoreNodeName());
} catch (InterruptedException e) {
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, “Error TODO", e);
}
}
もう1つの方法として、cloudDesc.isLeader()を使用する方法もありますが、私の理解が正しい場合、最初のコードが最も正確な状態を提供すると思います。正しいですか?現在のリーダーの状態を確認する必要があるたびにこれを実行するべきでしょうか?リーダーはいつでも変わる可能性があるのでしょうか?パフォーマンスへの影響は何ですか?
お手伝いいただきありがとうございます。
Lamine
トピックへ返信するには、ログインが必要です。