Migrate_from_s3 の問題

@zogstrip 最近、この分野での私の前の PR のレビューから文脈をお持ちですので、この PR のレビューをお願いしてもよろしいでしょうか? FIX: Make migrations from S3 more robust; fix bare URL migration by johnsonm · Pull Request #10093 · discourse/discourse · GitHub

この PR には、比較的largeなマイグレーションを実行中に修正してきた内容を含めています。すべての修正に対してテストを追加しようとはしていません。すべてのエラー形式をどのように注入すればよいか確信が持てないためです。しかし、少なくとも新しい機能についてはテストされています。

@RGJ 現在の私の PR は、CDN に関する部分を除き、あなたの最初の 2 点以外のすべての点を解決できると思います。私のサイトは CDN を使用しており、CDN URL を持つ動画をマイグレーションしましたが、これは discourse spaces の命名に関する副作用だった可能性があります。追加のケースがある場合、私の PR が正規表現への追加や、追加のバリエーションに対するテストケースの追加のための簡単な足場を提供してくれることを願っています。

投稿ごとに最初にマイグレーションを行うのが正しいと思います。投稿内のアップロードをマイグレーションした後、その投稿を再レンダリング(rebake)して、調理済みの投稿に正しい URL が含まれるようにする必要があるためです。投稿のマイグレーションが完了したら(キューの長さを直接確認するようにレート制限を変更したことで、2 週間未満で完了するかもしれません)、残りの作業を片付けていきます。

複数の投稿が同じコンテンツへの参照を共有する可能性があるため(複数の人が同じファイルをアップロードした場合など)、2 回目のパスで調理済みデータ内の古い URL をチェックし、新しい場所を取得するためにそれらの投稿を再レンダリングする必要があります。キューを過負荷にしないために、同じレート制限を使用できます。

makerforums では、新しいコンテンツを「s3」(私たちの場合は DigitalOcean Spaces)に配置するのをやめた後にブランディングを調整したため、壊れたロゴを見ることはないでしょう。しかし、少なくともアバターについては、S3 にまだアップロードが残っている可能性が高いです。投稿に関連しないアップロードのマイグレーションは、すべての投稿のマイグレーションが完了した後に開始する必要があります。私は、投稿内のアップロードのマイグレーションが完了した後、それについて文書化する必要があるでしょう。

@pfaffman エラーが再現しなかった Bizarre Problems with migrate_from_s3 - #5 を確認しました。現在の PR での私の修正がない場合、検証の失敗を含むエラーが静かに飲み込まれてしまいます。ここでの作業は、当時あなたが目にした問題の少なくともいくつかに対処できると思います。

@hosna https://meta.discourse.org/t/what-does-rake-uploads-migrate-from-s3-exactly-do/97285 で提起された問題は、この PR において部分的または完全に解決されています。完全に解決されていない場合、さらなる修正を検証するための追加のテストを追加しやすくするテストを追加しています。

@sam PR に 2.6 ラベルを付けたことから、少なくとも数日はマージされないだろうと推測します。レート制限機能の作業を修正と一緒に PR に取り込むべきでしょうか?それとも、修正と機能の作業を別々の PR に保つことを好みますか?どちらの方法でも対応できます。レート制限機能は非常にうまく機能しています。sidekiq キューが空になるのを待つようにしたことで、サイトの可用性に影響を与えることなく、約 3 倍の速度でマイグレーションを行っています。したがって、通常 PR で受け入れられるものであれば、取り込むのが妥当だと思います。そうでない場合、それをベースとした作業のマージを待つ必要があります。どちらにせよ、ご意見を聞ければ幸いです。

..

マイグレーションのレート制限パッチを DRY 化し、PR に取り込みました。実際にはうまく機能しており、sar を見ると、ライブマイグレーション中もサイトが機能し続けながら、ほぼゼロのアイドル時間を継続的に確認しています。バッチモードの利点の 1 つは、完全なマイグレーションのバッチごとに新しい Discourse バージョンを確認できることです。2.6.0beta1 がリリースされてすぐに、最初の機会にサイトをアップグレードし、その更新以降、マイグレーション PR を重ねて 2.6.0beta1 で正常にマイグレーションを実行しています。

この PR は現在レビューに提出できる状態だと思います。最後の数段階については別の PR を提出する予定ですが、これを整えることで、最後の部分を完了する前であっても、すべての人の一般的なマイグレーション体験が向上するでしょう。

「いいね!」 5