spring-boot/spring-boot-project
Andy Wilkinson 81dc0cc3cf Eliminate race condition in Tomcat's graceful shutdown
There was a race condition between the thread that's waiting for
Tomcat to become inactive or the graceful shutdown to be aborted
and the thread that aborts the shutdown and stops Tomcat when the
grace period has elapsed. This race can lead to Tomcat appearing
to have become inactive before the abort of the shutdown is
noticed. When this happens, the result of the shutdown is reported
as IDLE when it should have been REQUESTS_ACTIVE. The consequences
of this are mostly benign although it does affect the log messages
that are emitted. It is also causing some of our graceful shutdown
tests to be flaky.

This commit eliminates the race condition by considering the
state of the aborted flag before logging and returning the result
of the shutdown.

Closes gh-39942
2024-03-15 15:30:41 +00:00
..