HoustonPutman commented on PR #2384:
URL: https://github.com/apache/solr/pull/2384#issuecomment-2030560252
An example of how this would fix exception logging:
Existing implementation:
```
2024-04-01 21:01:38.810 ERROR
(coreZkRegister-1-thread-1-processing-172.17.0.2:8983_solr
test_shard1_replica_n1 test shard1 core_node2) [c: s: r: x: t:]
o.a.s.c.u.ExecutorUtil Uncaught exception java.lang.StackOverflowError thrown
by thread: coreZkRegister-1-thread-1-processing-172.17.0.2:8983_solr
test_shard1_replica_n1 test shard1 core_node2 => java.lang.Exception: Submitter
stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
java.lang.Exception: Submitter stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
~[?:?]
at org.apache.solr.core.ZkContainer.registerInZk(ZkContainer.java:240)
~[?:?]
at
org.apache.solr.core.CoreContainer.lambda$loadInternal$12(CoreContainer.java:1067)
~[?:?]
at
com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:212)
~[metrics-core-4.2.25.jar:4.2.25]
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
~[?:?]
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:312)
~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source) ~[?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.Exception: Submitter stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
~[?:?]
at
java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
~[?:?]
at
com.codahale.metrics.InstrumentedExecutorService.submit(InstrumentedExecutorService.java:104)
~[metrics-core-4.2.25.jar:4.2.25]
at
org.apache.solr.core.CoreContainer.loadInternal(CoreContainer.java:1046) ~[?:?]
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:760)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.createCoreContainer(CoreContainerProvider.java:427)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.init(CoreContainerProvider.java:246)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.contextInitialized(CoreContainerProvider.java:116)
~[?:?]
at
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1049)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:624)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:984)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:740)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:392)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
~[jetty-webapp-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:901)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
~[jetty-webapp-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:221)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.server.Server.start(Server.java:470)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at org.eclipse.jetty.server.Server.doStart(Server.java:415)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1919)
~[jetty-xml-10.0.20.jar:10.0.20]
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:?]
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
~[?:?]
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.eclipse.jetty.start.Main.invokeMain(Main.java:229)
~[start.jar:10.0.20]
at org.eclipse.jetty.start.Main.start(Main.java:528)
~[start.jar:10.0.20]
at org.eclipse.jetty.start.Main.main(Main.java:76) ~[start.jar:10.0.20]
```
Fix:
```
2024-04-01 21:07:29.848 ERROR
(coreZkRegister-1-thread-1-processing-172.17.0.2:8983_solr
test_shard1_replica_n1 test shard1 core_node2) [c: s: r: x: t:]
o.a.s.c.u.ExecutorUtil Uncaught exception java.lang.StackOverflowError thrown
by thread: coreZkRegister-1-thread-1-processing-172.17.0.2:8983_solr
test_shard1_replica_n1 test shard1 core_node2 => java.lang.Exception: Submitter
stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
java.lang.Exception: Submitter stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
~[?:?]
at
java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
~[?:?]
at
com.codahale.metrics.InstrumentedExecutorService.submit(InstrumentedExecutorService.java:104)
~[metrics-core-4.2.25.jar:4.2.25]
at
org.apache.solr.core.CoreContainer.loadInternal(CoreContainer.java:1046) ~[?:?]
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:760)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.createCoreContainer(CoreContainerProvider.java:427)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.init(CoreContainerProvider.java:246)
~[?:?]
at
org.apache.solr.servlet.CoreContainerProvider.contextInitialized(CoreContainerProvider.java:116)
~[?:?]
at
org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1049)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:624)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:984)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:740)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:392)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
~[jetty-webapp-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:901)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
~[jetty-servlet-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
~[jetty-webapp-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:221)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.server.Server.start(Server.java:470)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
~[jetty-server-10.0.20.jar:10.0.20]
at org.eclipse.jetty.server.Server.doStart(Server.java:415)
~[jetty-server-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
~[jetty-util-10.0.20.jar:10.0.20]
at
org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1919)
~[jetty-xml-10.0.20.jar:10.0.20]
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:?]
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
~[?:?]
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at org.eclipse.jetty.start.Main.invokeMain(Main.java:229)
~[start.jar:10.0.20]
at org.eclipse.jetty.start.Main.start(Main.java:528)
~[start.jar:10.0.20]
at org.eclipse.jetty.start.Main.main(Main.java:76) ~[start.jar:10.0.20]
Caused by: java.lang.Exception: Submitter stack trace
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.execute(ExecutorUtil.java:279)
~[?:?]
at org.apache.solr.core.ZkContainer.registerInZk(ZkContainer.java:240)
~[?:?]
at
org.apache.solr.core.CoreContainer.lambda$loadInternal$12(CoreContainer.java:1067)
~[?:?]
at
com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:212)
~[metrics-core-4.2.25.jar:4.2.25]
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
~[?:?]
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:312)
~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source) ~[?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.StackOverflowError
at
org.apache.solr.core.ZkContainer.lambda$registerInZk$1(ZkContainer.java:213)
~[?:?]
at
org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:312)
~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source) ~[?:?]
at java.base/java.lang.Thread.run(Unknown Source) ~[?:?]
```
Notice how the cause-submitter-stacktrace ordering is now correct, and that
the downstream error is actually being reported as the ultimate cause. This
will also work even if the error/exception has its own causes.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]