Commit d8cead54 authored by Andy Wilkinson's avatar Andy Wilkinson

Use accessor for in-progress async count added in Tomcat 9.0.33

Closes gh-20440
parent 281f4d4c
...@@ -16,22 +16,20 @@ ...@@ -16,22 +16,20 @@
package org.springframework.boot.web.embedded.tomcat; package org.springframework.boot.web.embedded.tomcat;
import java.lang.reflect.Field;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.catalina.Container; import org.apache.catalina.Container;
import org.apache.catalina.Service; import org.apache.catalina.Service;
import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardWrapper; import org.apache.catalina.core.StandardWrapper;
import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.Tomcat;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.boot.web.server.GracefulShutdown; import org.springframework.boot.web.server.GracefulShutdown;
import org.springframework.util.ReflectionUtils;
/** /**
* {@link GracefulShutdown} for {@link Tomcat}. * {@link GracefulShutdown} for {@link Tomcat}.
...@@ -90,10 +88,7 @@ class TomcatGracefulShutdown implements GracefulShutdown { ...@@ -90,10 +88,7 @@ class TomcatGracefulShutdown implements GracefulShutdown {
private boolean active(Container context) { private boolean active(Container context) {
try { try {
Field field = ReflectionUtils.findField(context.getClass(), "inProgressAsyncCount"); if (((StandardContext) context).getInProgressAsyncCount() > 0) {
field.setAccessible(true);
AtomicLong inProgressAsyncCount = (AtomicLong) field.get(context);
if (inProgressAsyncCount.get() > 0) {
return true; return true;
} }
for (Container wrapper : context.findChildren()) { for (Container wrapper : context.findChildren()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment