Unable to start Confluence after database driver change due to illegal cyclic inheritance dependencies

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

    

Summary

After changing the database driver (for example from ojdbc7 to ojdbc8) Confluence will fail to start. 


Environment

This problem was identified in the Confluence server and datacenter version 7.4.x with Oracle DB. It could also affect other versions of Confluence and other DBs.


Diagnosis

During startup in Catalina.out we can see "illegal cyclic inheritance dependencies" error like this one:

22-Mar-2021 11:07:13.851 SEVERE [main] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
        java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Standalone].StandardHost[localhost].StandardContext    [/synchrony-proxy]]
                at java.util.concurrent.FutureTask.report(FutureTask.java:122)
                at java.util.concurrent.FutureTask.get(FutureTask.java:192)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
        Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Standalone].StandardHost[localhost].StandardContext[/synchrony-proxy]]
                at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
                at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.lang.Thread.run(Thread.java:748)
        Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/synchrony-proxy] due to a StackOverflowError. Possible root caus    es include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [oracle.net.aso.d->oracle.net.aso.e->java.lang.Object->java    .lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.l    ang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lan    g.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.    Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Ob    ject->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Obje    ct->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object    ->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->    java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->ja    va.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java    .lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object]
                at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2414)
                at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2352)
                at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2298)
                at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:2268)
                at org.apache.catalina.startup.ContextConfig.scanWebXmlFragment(ContextConfig.java:2173)
                at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:2153)
                at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1407)
                at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1302)
                at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:985)
                at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:303)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5082)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                ... 9 more



Cause

Multiple JDBC drivers in the same library path will throw illegal cyclic inheritance dependencies issue with loading of /synchrony-proxy context path.


Solution

Check if in any Confluence library path if you have multiple JDBC drivers like ojdbc7.jar and ojdbc8.jar and remove the unneeded one:

  • <confluence-install>/lib
  • <confluence-install>/confluence/WEB-INF/lib


Last modified on Apr 15, 2021

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.