デコーダーの失敗、それともサムネイルワーカーの失敗? RAWプレビューの欠落をテストする

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

同じデコーダーを使ってキューの外で1つのRAWファイルをテストし、ワーカーの割り当てとジョブログを比較して、形式のサポート不足と実行失敗を切り分けます。

元のRAWファイルは正常にインポートされるのに、プレビューが空白または保留中のままになる場合、この判断が重要です。競合する状態は、RAWのデコードがサポートされていない、または失敗している状態と、サムネイルキュー、ワーカー、権限、または出力ストレージの障害です。保存済みの設定と使い捨てデータから始め、一度に1つの分岐だけを観察し、データ損失、権限、可用性のリスクが拡大する場合は中止します。

サポート対象外または失敗したRAWデコードと、サムネイルキュー、ワーカー、権限、または出力ストレージの障害を切り分ける

変更を加える前に環境を記録します。ソフトウェアとファームウェアのバージョン、デバイスID、マウント先またはネットワークパス、空き容量、権限、観測された症状を記録してください。ベースラインには、元のRAWファイルは正常にインポートされるのにプレビューが空白または保留中のままになる状態を再現できるだけの詳細を残します。

最初の候補は、RAWのデコードがサポートされていない、または失敗している状態です。2つ目は、サムネイルキュー、ワーカー、権限、または出力ストレージの障害です。現在のImmichがサポートするメディア形式は、テストで使用するメカニズムまたはコマンドの境界を定義するものであり、このホームサーバー自体からの観測に取って代わるものではありません。

判別テストを実行する前に、合格条件と中止条件を書き出します。合格とは、一方の分岐が予測する証拠が変化し、無関係なサービスは変わらないことです。不合格の場合は、推測に基づく修正を連鎖させるのではなく、システムを保存済みの状態に戻します。

管理された判別テストを1つ実行する

次の判別テストを使用します。1つのコピーしたRAWに対してメタデータとデコードのプローブを実行し、1つのサムネイルジョブをキューに入れて、キューから出力ファイルまで追跡します。変更した変数に結果の原因を帰属できるよう、ワークロード、クライアント、パス、ファイルセット、タイミングを一定に保ちます。

libvipsのデコーダーサポートを使って、分岐を実際に切り分けられる項目を選び、そのタイムスタンプ、終了ステータス、エラーテキスト、デバイスまたはスナップショットのID、遅延、転送バイト数、権限、復旧状態を記録します。ID、永続性、またはアプリケーション状態がテスト対象の主張である場合、コマンドが正常終了しただけでは不十分です。

再起動、再接続、再マウント、またはキャッシュのコールド化が元の状態の一部である場合は、そのイベント後にテストを1回繰り返します。最初の実行が破壊的である場合、または環境を復元できない場合は中止し、代わりに使い捨てコピーで再現します。

exiftool sample.CR3
# インストール済みの画像スタックでコピーをデコードし、サムネイルジョブを1つキューに入れる

証拠がどの分岐を支持するかを解釈する

合格:キュー処理の前にデコーダーが失敗する、またはデコードは成功するがワーカーが派生ファイルを書き込まない。結論が普遍的な主張にならないよう、合格した正確なバージョン、ID、ワークロードを記録します。

不合格:1台のカメラまたは1つの圧縮モードだけが失敗するため、サポート対象をそのサンプルに限定する必要があります。ネットワーク、メモリ、権限、またはソースの一貫性が両方に影響する可能性があるため、不合格は自動的に反対の分岐を証明するものではありません。エスカレーションする前に、それらの共有依存関係を切り分けます。

例外または曖昧な結果:元のファイルを保持し、リトライの嵐を止め、調査中は正常に動作するJPEGプレビュー経路を維持します。ログを保存し、復元可能なコピーが存在するまで、修復、削除、破棄、再パーティション、または再帰的な所有権変更コマンドを実行しないでください。

一致する対応を適用し、元の障害を再現する

観測された分岐に一致する対応を適用したら、縮小した代替条件ではなく、元の状態を再度実行します。デコーダーがキュー処理の前に失敗する、またはデコードは成功するがワーカーが派生ファイルを書き込まない状態が、2サイクル、または該当する再起動、スリープ、割り込み、負荷遷移にわたって確認できた場合にのみ、この判断は有効です。

読み取り専用のImmichライブラリを使って最も近い依存ワークフローを確認しますが、元のトリガーは変更しないでください。無関係なデータセット、共有、コンテナ、ユーザー、復旧ポイントでは、以前のアクセス状態とタイミングを維持する必要があります。

中止の境界は明確です。1台のカメラまたは1つの圧縮モードだけが失敗するため、サポート対象をそのサンプルに限定する必要がある場合は、最後に検証済みの設定へ戻し、証拠を保持し、分岐が再現可能な場合にのみ、より深いプラットフォームまたはハードウェアテストへエスカレーションします。

目的の結果が得られたら、サムネイルジョブのスケジュール設定と比較し、修正によって隣接するサービスにリスクが移らないことを確認します。新たなバックアップ、ID、タイムアウト、または可用性の障害が発生した場合、目的のテストに成功していても変更は失敗です。

よくある質問

RAWプレビューが表示されない場合の診断で、残る検索内容は通常、同じカメラのRAWファイルの一部だけが動作する理由、ファイル権限が正しく見えるのにワーカーが失敗する可能性、プレビューをライブラリ全体で再生成すべきかどうかです。以下の回答では、これらのエッジケースを主要な判断から分離します。

合格の境界は変わりません。デコーダーがキュー処理の前に失敗する、またはデコードは成功するがワーカーが派生ファイルを書き込まないことです。後続の条件によってファイルシステム、ID、ネットワークパス、またはアプリケーションのバージョンが変わった場合は、その変更の影響を受ける判別テストだけを繰り返します。

1台のカメラまたは1つの圧縮モードだけが失敗するため、サポート対象をそのサンプルに限定する必要がある場合は、実験を広げるのを止めます。その時点で、元のファイルを保持し、リトライの嵐を止め、調査中は正常に動作するJPEGプレビュー経路を維持します。プラットフォーム、ストレージ、またはハードウェアの担当者へエスカレーションする前に、証拠を保存してください。

同じカメラのRAWファイルの一部だけが動作するのはなぜですか?

カメラのファームウェア、圧縮モード、埋め込みプレビュー、デコーダーのバージョンは、同じ拡張子でも異なる場合があります。

ファイル権限が正しく見えても、ワーカーが失敗することはありますか?

あります。ワーカーが別のコンテナパス、UID、または出力マウントを使用している可能性があります。

プレビューをライブラリ全体で再生成すべきですか?

1つのサンプルが成功し、キューとストレージの余裕で処理を吸収できることが確認されるまでは、実行しないでください。

同じワークロードによって、証拠がRAWのサポート対象外またはデコード失敗、あるいはサムネイルキュー、ワーカー、権限、または出力ストレージの障害に沿って変化し、一致する対応によって元の症状が解消され、別の症状が発生しなければ、診断は完了です。どちらの分岐も再現可能な状態を維持できない場合は、ログと保存済みの状態をそのまま保ちます。不確実性は、修正を積み重ねる理由ではなく、エスカレーションする理由です。

サポートとヒント

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.