langGeniusさん、マジか?

dify

1.17.1へのアップグレードに必要なこと

1.17.1のアップグレードに際し、またもやWeaviateユーザに悲しいお知らせ。Weavateのアップグレードが必要になったようです。しかも今回以下のバージョンに段階的に引き上げるという操作が必要になってきます。

すべてのマイナーリリースを順番に移行し、常にそのマイナーバージョンの最新パッチを適用します。

StepImage tag
0 (current)semitechnologies/weaviate:1.27.0
1cr.weaviate.io/semitechnologies/weaviate:1.27.27
2cr.weaviate.io/semitechnologies/weaviate:1.28.16
3cr.weaviate.io/semitechnologies/weaviate:1.29.11
4cr.weaviate.io/semitechnologies/weaviate:1.30.23
5cr.weaviate.io/semitechnologies/weaviate:1.31.22
6cr.weaviate.io/semitechnologies/weaviate:1.32.27
7cr.weaviate.io/semitechnologies/weaviate:1.33.18
8cr.weaviate.io/semitechnologies/weaviate:1.34.20
9cr.weaviate.io/semitechnologies/weaviate:1.35.23
10cr.weaviate.io/semitechnologies/weaviate:1.36.23
11cr.weaviate.io/semitechnologies/weaviate:1.37.16
12cr.weaviate.io/semitechnologies/weaviate:1.38.14
13cr.weaviate.io/semitechnologies/weaviate:1.39.2

手順は起動・停止手順として後述されていますが、要はこのバージョンで順に起動・停止を繰り返して1.39.2まで持って行けとのこと。なかなかやることえげつないっす。

一応こんなことが書かれてました。

ステップ1でレジストリが変更されます。既存のデプロイメントではDocker Hubからsemitechnologies/weaviateをプルしますが、新しいデプロイメントではWeaviate独自のレジストリであるcr.weaviate.io/semitechnologies/weaviateを使用します。これはDifyの更新されたComposeファイルが参照しているレジストリです。イメージ自体は同一であるため、レジストリの変更とバージョンの更新を1回の意図的な操作でまとめて行います。
パッチバージョンは執筆時点で最新のものでした。中間バージョンについては、作業開始前により新しいパッチが存在するか確認し、可能であればそれを優先してください。
最終バージョンは例外です。docker-compose.yamlで指定されているバージョンに固定し、利用可能な最新のパッチバージョンには移行しないでください。ボリュームを新しいパッチバージョンに移行した後にDifyのピンを適用すると、そのボリュームにはすでに新しいバイナリが書き込まれており、ロールバック警告で説明されている状況が発生します。
マイナーバージョンを1つずつ進めることで、影響範囲を限定できます。もし特定のバージョンで問題が発生した場合、単一のバージョンだけをロールバックすればよく、全てのマイナーバージョンを一括して変更した場合のように原因の特定が困難になることはありません。
最新リリースに近いバージョンを使用することで、修正適用期間を最大限に活用できます。Weaviateは現在のバージョンとその2つ前のマイナーバージョンをサポートしています。これより古いバージョンはサポート終了となっており、バグ修正やセキュリティパッチの対象にはなりません。この移行作業完了後は定期的に見直しを行い、最新のパッチバージョンに移行してください。

なので、一応こちらとしてはこんな対処をしました。

  1. docker compose down で一度全落としする
  2. docker-compose.yaml でバージョンを1段階上にして上書き保存
  3. docker compose up weaviate を実行して、weaviateだけ起動する
  4. しばらくモリモリログが出る。20秒程度ログが出てこない事を確認できたら Ctrl + C を押して停止
  5. 停止したら手順2に戻る。これを1.39.2になるまでただひたすら繰り返す

なお、以下のように上がるバージョンによって以下のような時間がかかりそうです。実際そんな印象を受けました。

Server versionGap before queries work
1.27 – 1.30under 0.3s
1.31 and later4 – 9s

処理途中で走ってたログはこんな感じ。

w Enable Watch   d Detachweaviate-1  | {"action":"cyclemanager","build_git_commit":"1f5ad75","build_go_version":"go1.25.11","build_image_tag":"v1.35.23","build_wv_version":"1.35.23","level":"info","msg":"cycle manager started","name":"vector_index_14f631c5_faef_4fa1_9ef2_530ae1190327_node/vector/tombstone_cleanup","time":"2026-09-11T06:11:51Z"}


w Enable Watch   d Detachweaviate-1  | {"action":"restore_from_disk","build_git_commit":"1f5ad75","build_go_version":"go1.25.11","build_image_tag":"v1.35.23","build_wv_version":"1.35.23","class":"Vector_index_14f631c5_faef_4fa1_9ef2_530ae1190327_Node","level":"info","msg":"snapshots disabled, loading from commit log","shard":"5MBiidV6Rt46","targetVector":"default","time":"2026-09-11T06:11:51Z"}


w Enable Watch   d Detachweaviate-1  | {"action":"cyclemanager","build_git_commit":"1f5ad75","build_go_version":"go1.25.11","build_image_tag":"v1.35.23","build_wv_version":"1.35.23","level":"info","msg":"cycle manager started","name":"vector_index_72c9c00b_a2db_49d9_a38b_32017b0a2b1f_node/vector/commit_logger","time":"2026-09-11T06:11:51Z"}


w Enable Watch   d Detachweaviate-1  | {"action":"cyclemanager","build_git_commit":"1f5ad75","build_go_version":"go1.25.11","build_image_tag":"v1.35.23","build_wv_version":"1.35.23","level":"info","msg":"cycle manager started","name":"vector_index_72c9c00b_a2db_49d9_a38b_32017b0a2b1f_node/vector/tombstone_cleanup","time":"2026-09-11T06:11:51Z"}

他にもgitアクセスが行われ、何かがPullされてるようなメッセージも流れていたので、そこでパッチなどが適用されているのかもしれませんね。恐らくはDocker.ioへのアクセスが絞られたとかそういう事を懸念してのことなのかなぁ・・・うーん。やっぱり無償で何かサービスを提供するというのは、今後厳しくなっていくのかもデスね。

その後、1.17.1のコンテナにイメージを差し替えて起動したら、取り敢えずは無事に動いてそうです。かなーり手間を要する行為なので、実際には以下のページを見てきちんと内容を把握してから挑んでくださいね。マジで。

Weaviate Server Upgrade Path – Dify Docs
How to move a self-hosted Weaviate server across minor versions without losing vector data

コメント

タイトルとURLをコピーしました