Pega 8.6.2 Tomcat on Oracle fails to shutdown properly
Hi All,
When we come to shutdown tomcat on production we get the PegaRules.log message "PegaRULES shutdown complete" but tomcat doesn't shutdown.
Instead what we see is that catalina won't quit and we see the following in the catalina log.
Hi All,
When we come to shutdown tomcat on production we get the PegaRules.log message "PegaRULES shutdown complete" but tomcat doesn't shutdown.
Instead what we see is that catalina won't quit and we see the following in the catalina log.
27-Sep-2022 23:07:44.364 INFO [node] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
27-Sep-2022 23:07:44.412 INFO [node] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
27-Sep-2022 23:07:44.413 INFO [node] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["https-jsse-nio-8443"]
27-Sep-2022 23:07:44.413 INFO [node] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["https-jsse-nio-8443"]
Exception in thread "elasticsearch[node][generic][T#5]" java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
Exception in thread "elasticsearch[node][generic][T#1]" at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.transport.TransportService$TimeoutInfoHolder
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:598)
at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:550)
... 5 more
java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "elasticsearch[node][generic][T#6]" java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "elasticsearch[node][generic][T#3]" java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "elasticsearch[node][generic][T#7]" java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "elasticsearch[node][generic][T#8]" java.lang.NoClassDefFoundError: org/elasticsearch/transport/TransportService$TimeoutInfoHolder
at org.elasticsearch.transport.TransportService$TimeoutHandler.run(TransportService.java:954)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:575)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Based on this we can see that the connectors have shutdown but still tomcat refused to shutdown. We then see the following logs repeat over and over again.
27-Sep-2022 23:08:37.081 WARNING [m3-json-metrics-publisher] io.micrometer.core.instrument.push.PushMeterRegistry.publishSafely Unexpected exception thrown while publishing metrics for JsonMeterRegistry
java.lang.NullPointerException
at org.apache.logging.log4j.core.Logger.isEnabled(Logger.java:170)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1982)
at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:750)
at com.pega.gcs.m3.metrics.JsonMeterRegistry.publish(JsonMeterRegistry.java:216)
at io.micrometer.core.instrument.push.PushMeterRegistry.publishSafely(PushMeterRegistry.java:52)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
In the end after waiting about 20mins we have to manually kill tomcat with kill <PID> -9 isn't needed.
This is obviously slowing down our maintenance window as it happens on nearly all the non webuser nodes.
Anyone got any idea how to address this issue?
Thanks Craig
***Edited by Moderator Marije to add Support Case Details for 3rdparty metrics error***
***Edited by Moderator Marissa to update Support Case details***