Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to complete execution of health check Collaborative Editing Mode due to an exception

David Bonet Montes April 15, 2018

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?

2 answers

1 accepted

0 votes
Answer accepted
David Bonet Montes April 18, 2018

Hi! Finally it came to be a Confluence cloud to server migration bug: https://jira.atlassian.com/browse/CONFSERVER-45919

Just edit and save the general configs and it solved the problem

Flora Vidal December 3, 2018

Hey David,

Many thanks for posting your solution. It worked for us too !

Cheers !

Puneet Baradia May 13, 2019

Hey David

Yes the solution is right. It worked ,many thanks for the solution.

0 votes
David Bonet Montes April 17, 2018

Does anyone has the same problem?
If you need any extra detail, please, don't hesitate to ask for it.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events