Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
8.0.0-M3
Description
We faced an infinite loop on deploying a war.
I was able to debug the issue and found the cause.
This is the bottom of the stacktrace:
at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsFile(ContextConfig.java:2059) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsFile(OpenEJBContextConfig.java:634) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:2002) at org.apache.catalina.startup.OpenEJBContextConfig.processAnnotationsUrl(OpenEJBContextConfig.java:650) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1952) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1156) at org.apache.catalina.startup.OpenEJBContextConfig.webConfig(OpenEJBContextConfig.java:411) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:765) - locked <0x0000000749921aa8> (a org.apache.catalina.startup.OpenEJBContextConfig) at org.apache.catalina.startup.OpenEJBContextConfig.configureStart(OpenEJBContextConfig.java:124) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5007) - locked <0x00000007499211b0> (a org.apache.catalina.core.StandardContext) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) - locked <0x00000007499211b0> (a org.apache.catalina.core.StandardContext) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858) at java.util.concurrent.Executors$RunnableAdapter.call(java.base@11/Executors.java:515) at java.util.concurrent.FutureTask.run(java.base@11/FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(java.base@11/AbstractExecutorService.java:118) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1629) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:304) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1176) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1398) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1402) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1370) at java.lang.Thread.run(java.base@11/Thread.java:834)
The problem is the place were the fragments are determined to scan.
That is done in org.apache.tomee.loader.TomEEJarScanner#scan.
In our case the classpath contains ::
In setenv.sh we had a line like this:
export CLASSPATH=/opt/tomee-8mp/lib/ojdbc8.jar:${CLASSPATH}
But if CLASSPATH originally resolves to null, then it is empty.
In attachment TomEE_classpath_split.png you can see that due to the split the 'jar' variable resolves to "".
With the conversion to URL is results in file:/
That you can see in TomEE_classpath_split2.png
During War deployment is scans the complete file system (that is a security risk, it can include whatever stuff now).
Somehow on our server there was at some place a symlink to root, so it comes an a infinite loop.
Attachments
Attachments
Issue Links
- links to