奇妙なNodeイメージパッチ:JARファイルの順序の謎

2025-04-09

Nodeイメージパッチのアップデートにより、本番環境のJVMアプリケーションが長時間停止しました。根本原因は、JVMのクラスパスでワイルドカード`/jars/*`を使用していたことでした。パッチアップデート後、ext4ファイルシステムのディレクトリハッシュシードが変更され、JARファイルのロード順序が変わりました。これにより、特定のバージョンのBouncy Castleライブラリに依存するクライアントライブラリが正しく初期化できなくなり、`NoSuchFieldError`が発生しました。著者は調査を行い、buildahによるレイヤー圧縮やOverlayFSレイヤーの順序の問題を除外しました。最終的に、問題はext4ファイルシステムのディレクトリハッシュシードの変化にあることが判明しました。ext4ディスクイメージファイルのハッシュシードを変更することで、これを確認しました。このインシデントは、一見小さなシステムの詳細が深刻な結果につながる可能性があることを示しており、基盤となるシステムの複雑さを深く理解することの重要性を強調しています。

開発