【要約】エラーが指している場所と、壊れた場所は違うことがある [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が画像投稿スクリプトのデバッグ中に、エラーメッセージを鵜呑みにした問題。
- ・
Invalid media idというエラーに対し、画像形式やサイズを疑った。 - ・通信断による失敗が捕捉されず、不正な値(None)が下流へ流れた。
- ・エラーの発生場所(症状)と、真の故障箇所(原因)が乖離していた。
// Approach
開発者がエラーの発生源を特定するために、ログの確認方法と設計を見直した。
- ・
tail -20ではなくhead -40を用い、ログの先頭から例外を確認した。 - ・通信エラー(
Connection reset by peer)が根本原因だと突き止めた。 - ・失敗時に文脈を付与して例外を再送出する実装を検討した。
// Result
開発者がエラーの伝播メカニズムを理解し、デバッグの精度向上と実装指針を得た。
- ・ログの確認順序を修正し、原因特定までの遠回りを防いだ。
- ・外部I/Oの失敗をその場で例外化する設計指針を確立した。
- ・サイズ変更による成功を、確率の変化として捉える判断基準を得た。
Senior Engineer Insight
> 極めて実践的な知見である。大規模システムでは、エラーは必ずしも発生源で報告されない。
- ・単にエラーを握り潰さないことが重要だ。
- ・発生場所の文脈を維持して伝播させる設計が求められる。
- ・これが欠けると、運用時のMTTRを悪化させる。