🧭

spring boot 2.5.5の修正内容

2021/10/23に公開

これのまとめ
https://github.com/spring-projects/spring-boot/releases/tag/v2.5.5

spring actuatorの/envでSPRING_APPLICATION_JSONがサニタイズされないバグの修正

https://github.com/spring-projects/spring-boot/issues/28045
アプリケーション起動時にアプリケーション引数に渡すことができる環境変数SPRING_APPLICATION_JSONを/envのエントリーポイントで見ようとするとサニタイズされず、生のままで表示されていた

サニタイズされるように修正され、ついでにサニタイズ対象のデフォルトに追加された

Flywayを使ったテストが起動しないの修正(2.5.3から発生したバグ)

https://github.com/spring-projects/spring-boot/issues/28079
dbを使ったテストで利用されるflyway
https://flywaydb.org/
spring bootにはflywayを使ったテスト用のauto configがあるが、2.5.3の修正の際に、起動の優先度が変わっておりflywayが起動する前に別のdbの書き換えの処理が走ってしまい、flywayのインスタンス生成に失敗していたのが修正された

spring actuatorの/metricsのspring web mvcのメトリクスが独自フィルターで特定の例を吐いたときにステータスコードが200で記録されるバグの修正

https://github.com/spring-projects/spring-boot/issues/27988
独自filterを追加したりして、spring web mvcのfilter処理のあとに走るfilterで特定の例外(IOException,RuntimeException,ServletException)を吐くとステータスコードが200で登録されていた

webサーバーをUndertowにした場合warが起動しないバグの修正

https://github.com/spring-projects/spring-boot/issues/9283
すごい昔issueが修正されてた
tomacatとかjettyとかのwebサーバーの一種にundertowっていうのがあるらしい
udertow用のjar周りの処理でjarのパスの書き方が悪く、jarの中身が取得できず、立ち上がらなかったのが修正された

undertow初めて聞いたので、調べてみらたらパフォーマンスがいいらしいみたいな記事を見つけた(ちょっと古い記事)
https://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers/

spring-boot:build-imageを複数実行するとdockerの起動に失敗する

https://github.com/spring-projects/spring-boot/issues/27888
dockerをよしなに構築してくれるbuild-imageを複数実行すると、一時コンテナの削除に失敗するバグが修正された

1タスクに付き1コンテナ削除しないといけないのを、最初に終わるタスクが全部削除してて、一時コンテナの削除に失敗してた

warに固めたspringを起動中にtomcatをシャットダウンするとメモリーリークが発生するバグの修正

https://github.com/spring-projects/spring-boot/issues/27987

warに固めた場合webサーバーのシャットダウンはしないほうがいいっていうのがspringのドキュメントに書いてあるらしく、それを守らなかったらメモリーリークが発生してたらしい
使い方を守らない人のために修正いれるやさしい世界

シャットダウン時に不要なhookを削除する処理が追加されてた

buildされたjarが大きいと実行できないバグの修正

https://github.com/spring-projects/spring-boot/issues/27822
jarが4Gを超えるとzipの解凍に失敗して起動しなかったのが修正された

azureのwindowsで動かすとazure判定をしてくれないバグの修正

https://github.com/spring-projects/spring-boot/pull/27819
azure上で動いてることを判定するための環境変数がlinuxにしか存在しないものになっていた
window上だと3つのユニークな環境変数があり、それが追加された

テストを並列で実行したときに@Repeatを使ったテスト@MockBeanが

https://github.com/spring-projects/spring-boot/issues/27693
@Repeatを使って繰り返しテストを実行すると、すでにbean factoryに登録されているものを使いまわさないといけないところを、新たなインスタンスを登録しようとしてコケてた
作ろとしてるインスタンスがbean factoryに登録済みだったら例外を吐かないように修正した

AbstractRoutingDataSourceでヌルポが出るバグの修正

https://github.com/spring-projects/spring-boot/pull/27698
複数のDBに一つのアプリケーションから接続する場合とかに使うAbstractRoutingDataSourceの生成時にkeyがnullになる値が与えられるとヌルポが発生していた
keyにnullを入れるってかなり特殊なケースな気がするので、どういったケースで発生するのかは追ってない

Discussion