I've not found anything in the logs to suggest the problem or a solution. I was able to debug the loading and step into some decompiled Tomcat-util jar classes.
I believe the null pointer happens in the TaskQueue class and take() method. The last step, the super.take() is the point of failure.
public Runnable take() throws InterruptedException {
return this.parent != null && this.parent.currentThreadShouldBeStopped() ? this.poll(this.parent.getKeepAliveTime(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS) : (Runnable)super.take();
}
That method is called by the getTask() method in the ThreadPoolExecutor class at this statement. this.workQueue is empty at the time.
Runnable r = timed ? (Runnable)this.workQueue.poll(this.keepAliveTime, TimeUnit.NANOSECONDS) : (Runnable)this.workQueue.take();
I can switch back to Tomcat 7.0.29 and this runs fine but not in 8.5.73. I believe that I have updated the Tomcat configuration files to match and I am guessing that the issue lies in configuration somewhere.
CodePudding user response:
