Quarkus 3.13.3 released - Maintenance release というのがありました。
これって何が原因かというと、使用しているライブラリの乱数生成にLinuxの /dev/random にアクセスして乱数を取得するものがあったことです。
Linuxの /dev/random はデバイスの入力などをもとに完全な乱数を生成することができるものでした。問題点として、デバイスの入力などを基に乱数を生成するので、デバイスからの入力が十分に無い場合、例えばサーバー用途でユーザーからの入力が行われない場合は乱数の生成ができずにブロックされてしまいます。 つまり、/dev/random にアクセスしても応答が返ってきません。
古くからこの問題は良く知られており、よく知られた解決策としては /dev/urandom を使用する事です。
Java でもFAQレベルで多くの記事が見つかります。
/dev/random について詳しく知りたい人は以下の記事でも。
で、最近Linux kernelの5系の途中からこの /dev/random がブロックしなくなりました。RHELだと8まではブロックして、9からはブロックしなくなります。
で、何が発生するかというと、RHEL 9や他の最新のLinuxでは動いたものが8以前、もしくは他のLinuxのちょっと古い環境では動かなくなる可能性があるという事です。
まとめ
当たった人南無。
Quarkusのテストでこれが見つからなかった原因かどうかは知らないけどね。
- Quarkusのチケット Downgrade commons-lang3 to 3.14.0 to avoid entropy issues by famod · Pull Request #42597 · quarkusio/quarkus · GitHub
- Quarkusから依存している引っかかったライブラリのチケット Liquibase hangs when trying to apply changesets on a newly created machine · Issue #6178 · liquibase/liquibase · GitHub
- 根本原因のライブラリのチケット https://issues.apache.org/jira/browse/LANG-1748