There's 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. This result is 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.
Comment From: wilkinsona
This only affects 3.1.x (and earlier, now unsupported branches) as the problem was addressed in 3.2 as a side-effect of the changes to separate stop and destroy.