Solr 9 のデータノードと Solr 8 のオーバーシアノードでコレクションを作成するときのエラー

トピック作成者:ks-solruserml-bot (2024/12/28 18:45 投稿)
4
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/1ss6jw970cw2nxwlyscotpmq3j28zdjy into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは、

私はSolrの初心者で、Solr 8.11.3のインストールをSolr 9.6.1にアップグレードするタスクを任されています。

Solr 9.6.1ノードに対してコレクション作成コマンドを送信し、Solr 8.11.3がオーバーシアとして動作している場合に問題が発生しています。

Javaでのコマンドは以下の通りです:

CollectionAdminRequest.createCollection(collectionName, configName, numShards, 0)
.setAutoAddReplicas(false)
.setRouterName("compositeId")
.setCreateNodeSet("EMPTY")
.setReplicationFactor(1);

オーバーシアで確認できるエラーは以下のいずれかです。これは、そのコレクションが以前に作成され削除されたかどうかに依存しているようです。

以前に作成されたが削除されたコレクションの場合

オーバーシア(Solr 8)のログには以下が表示されます:

01:42:43.927 ERROR (OverseerThreadFactory-25-t...:8983_solr) [ ]
o.a.s.c.a.c.OverseerCollectionMessageHandler Collection:
test-collection_1.2 operation: create failed
org.apache.solr.common.SolrException: Could not fully create collection:
test-collection_1.2
...

そのコレクションが一度も作成されたことがない場合

オーバーシアログには以下が表示されます:

01:42:14.439 INFO (OverseerThreadFactory-25-thread-..._solr) [ ]
o.a.s.c.a.c.CreateCollectionCmd Create collection test1-collection_1.2
...
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode =
NoNode for /clusterstate.json
...

これらのエラーのため、コレクション作成に失敗します。

質問

Solr 9(データノード)とSolr 8(オーバーシアノード)の間で、CollectionAdminRequest.createCollectionに関する既知の互換性の問題がありますか?これまでは、両方がSolr 8で動作している場合に問題なく動作していました。この問題を回避する方法はありますか?

よろしくお願いします。
Patrick

返信投稿者:ks-solruserml-bot (2024/12/28 18:46 投稿)

こちらがSolr 9に送信しているリクエスト内容です:

{
"class":"org.apache.solr.client.solrj.request.CollectionAdminRequest$Create",
"method":"GET",
"params.action":"CREATE",
"params.name":"ftest-collection_1.2",
"params.collection.configName":"test-collection",
"params.createNodeSet":"EMPTY",
"params.numShards":"2",
"params.router.name":"compositeId",
"params.nrtReplicas":"1",
"params.autoAddReplicas":"false"
}
返信投稿者:ks-solruserml-bot (2024/12/28 18:46 投稿)

こんにちは、

オーバーシア(Overseer)のキュー上のオブジェクトはシリアライズされたJavaオブジェクトであるため、大規模なアップグレードの途中ではコレクションを作成することはできないと思います。
ローリングアップグレードの間はそのようなクラスターイベントを一時停止し、オーバーシアノードがアップグレードされる際にキューを空にしておくことをお勧めします。

Jan

返信投稿者:ks-solruserml-bot (2024/12/28 18:46 投稿)

こんにちは、Janさん

ご返信ありがとうございます。本当に感謝しています。

その問題はSolr 8.5以前のバージョンに特有のものだと思っていました。私たちはSolr 8.11.3に移行し、useUnsafeOverseerResponseフラグの使用を廃止しました。そして、他のエラーメッセージ(「consider as bad message and poll out from the queue」)を見る限り、オーバーシアは実際にメッセージをデシリアライズできているようですが、KeeperExceptionに遭遇しているようですか?

ありがとうございます。
Patrik

返信投稿者:ks-solruserml-bot (2024/12/28 18:46 投稿)

問題の説明に基づくと、アップグレード中にはコレクション管理コマンドをオーバーシアノードに送信することで回避策があるかもしれません。少なくともアップグレード中にはそれを試してみる価値があるでしょう。

また、9.6ではなく9.0にアップグレードすることで状況が改善する可能性もあると思います。特に具体的な非互換性があると知っているわけではありませんが、9.xライン全体で理論上、8.xが受け入れられない変更がある可能性を想像しています。特に、オーバーシアキューで受信側と送信側がZK(ZooKeeper)を介して間接的に協力しなければならないプロトコルのような部分においてです。ただし、これはあくまで仮説です。

残念ながら、Solrのアップグレード互換性については、プロジェクト内に自動テストや手動スクリプトなどの明確な確認手段がありません。Dockerの時代では、このようなテストはそれほど難しくないはずですが、明らかにこの分野には欠落があります。参考までに、私たちはこの問題に「関心」を持っており、標準や受け入れ基準の観点から考慮し、できる限りの努力をしていますが、テストがないためにそれは「ベストエフォート」にとどまっています。

〜 David Smiley
Apache Lucene/Solr検索開発者
http://www.linkedin.com/in/davidwsmiley

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2025 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?