Hello all,
I have this error in our Confluence server (latest version).
All is working unless collaborative edition. In the logs, when I set the debug mode shows this log:
WARN [HealthCheckWatchdog:thread-3] [troubleshooting.healthcheck.concurrent.SupportHealthCheckTask] healthCheckError Unable to complete execution of health check Collaborative Editing Mode due to an exception
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Base URL misconfigured: <null>
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at com.atlassian.troubleshooting.healthcheck.concurrent.SupportHealthCheckTask.getFutureWithTimeout(SupportHealthCheckTask.java:88)
at com.atlassian.troubleshooting.healthcheck.concurrent.SupportHealthCheckTask.lambda$runAsync$0(SupportHealthCheckTask.java:68)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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.IllegalStateException: Base URL misconfigured: <null>
at com.atlassian.confluence.api.impl.sal.ConfluenceApplicationProperties.getCanonicalContextPath(ConfluenceApplicationProperties.java:94)
at com.atlassian.fugue.Option$2.fold(Option.java:373)
at com.atlassian.fugue.Option.getOrElse(Option.java:207)
at com.atlassian.confluence.api.impl.sal.ConfluenceApplicationProperties.getBaseUrl(ConfluenceApplicationProperties.java:58)
at sun.reflect.GeneratedMethodAccessor323.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
at com.sun.proxy.$Proxy317.getBaseUrl(Unknown Source)
at sun.reflect.GeneratedMethodAccessor323.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy1671.getBaseUrl(Unknown Source)
at com.atlassian.troubleshooting.healthcheck.SupportHealthStatusBuilder.getHelpPathUrl(SupportHealthStatusBuilder.java:114)
at com.atlassian.troubleshooting.healthcheck.SupportHealthStatusBuilder.buildStatus(SupportHealthStatusBuilder.java:135)
at com.atlassian.troubleshooting.healthcheck.SupportHealthStatusBuilder.warning(SupportHealthStatusBuilder.java:75)
at com.atlassian.troubleshooting.confluence.healthcheck.support.CollabEditingModeSupportHealthCheck.check(CollabEditingModeSupportHealthCheck.java:39)
at com.atlassian.troubleshooting.healthcheck.impl.PluginSuppliedSupportHealthCheck.check(PluginSuppliedSupportHealthCheck.java:49)
... 4 more
Caused by: java.net.MalformedURLException
at java.net.URL.<init>(URL.java:627)
at java.net.URL.<init>(URL.java:490)
at java.net.URL.<init>(URL.java:439)
at com.atlassian.confluence.api.impl.sal.ConfluenceApplicationProperties.getCanonicalContextPath(ConfluenceApplicationProperties.java:92)
... 37 more
Caused by: java.lang.NullPointerException
at java.net.URL.<init>(URL.java:532)
... 40 more
It confuses me because the base url is set. I'm in a subdomain (like confluence.mycompay.com) and my base url is correct. I edited this fragment of the server.xml.
<Engine name="Standalone" defaultHost="localhost" debug="0">
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false" startStopThreads="4">
<Context path="/" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true">
<!-- Logging configuration for Confluence is specified in confluence/WEB-INF/classes/log4j.properties -->
<Manager pathname=""/>
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="60"/>
</Context>
<Context path="${confluence.context.path}/synchrony-proxy" docBase="../synchrony-proxy" debug="0"
reloadable="false" useHttpOnly="true">
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="60"/>
</Context>
</Host>
</Engine>
As you can see I set the path to "/" instead of empty. But still the exception says that is null. In the global configuration I have the base url set correctly.
Do you have any idea of why is that failing?