Synchrony Fails To Start Due To Missing Permissions In The Java Directory
Problem
Confluence startup does not not start synchrony process correctly. The synchrony JVM is not running on the system.
In addition to the above, the Atlassian synchrony logs are empty.
Diagnosis
To diagnose this issue, we must enable some debug logging in Confluence to confirm that the application is attempting to start synchrony:
- Enable DEBUG for the following class in the Logging and profiling UI:
- com.atlassian.confluence.plugins.synchrony
- com.atlassian.confluence.plugins.synchrony
Go to the Plugins UI and check if the system plugins related to Synchrony are enabled.
- Confluence Collaborative Editor Plugin
- Synchrony Interop Bootstrap Plugin
Attempting to restart Synchrony again will trigger the Synchrony startup. We will see the following messages in Confluence logs:
DEBUG [synchrony-interop-executor:thread-2] [plugins.synchrony.bootstrap.DefaultSynchronyProcessManager] lambda$startProcess$1 starting up Synchrony with command [/opt/oracle-jdk-8u202/jre/bin/java, -classpath, /opt/atlassian/confluence/temp/2.1.0-master-9d112c9d.jar:/opt/atlassian/confluence-6.15.4/confluence/WEB-INF/lib/postgresql-42.1.1.jar, -Xss2048k, -Xmx1g, synchrony.core, sql]
DEBUG [synchrony-interop-executor:thread-2] [plugins.synchrony.bootstrap.DefaultSynchronyProcessManager] onBeforeStart Added shutdown hook for Synchrony
DEBUG [ListenableFutureAdapter-thread-8] [plugins.synchrony.bootstrap.DefaultSynchronyProcessManager] lambda$startup$4 Synchrony process started, updating configuration.
WARN [ListenableFutureAdapter-thread-3] [plugins.synchrony.bootstrap.DefaultSynchronyMonitor] lambda$null$3 Rescheduled heartbeat check failed.
-- url: /rest/synchrony-interop/restart | referer: https://[Confluence_base_URL]/admin/confluence-collaborative-editor-plugin/configure.action | traceId: 67b463998b20e12d | userName: USER_NAME
com.atlassian.util.concurrent.TimedOutException: Timed out after: 33 SECONDS
at com.atlassian.confluence.plugins.synchrony.bootstrap.DefaultSynchronyMonitor.lambda$pollHeartbeat$4(DefaultSynchronyMonitor.java:91)
at com.atlassian.confluence.plugins.synchrony.bootstrap.DefaultSynchronyMonitor.pollHeartbeat(DefaultSynchronyMonitor.java:114)
at com.atlassian.confluence.plugins.synchrony.bootstrap.DefaultSynchronyMonitor.lambda$null$1(DefaultSynchronyMonitor.java:97)
Nothing is written into the Atlassian Synchrony logs after that however, if we grab the startup command and run manually in the server command line we will get the following:
/opt/oracle-jdk-8u202/jre/bin/java -classpath /opt/atlassian/confluence/temp/2.1.0-master-9d112c9d.jar:/opt/atlassian/confluence-6.15.4/confluence/WEB-INF/lib/postgresql-42.1.1.jar -Xss2048k -Xmx1g synchrony.core sql
bash: /opt/oracle-jdk-8u202/jre/bin/java: Permission denied
Cause
There are missing permissions for JAVA to execute the Synchrony startup command.
Resolution
Ensure the permissions for the JAVA folder, Confluence install directory and Confluence Data directory are set correctly. The Confluence user on Linux must have permissions to execute the synchrony startup command.
$ chmod -R 755 <Install-directory>
$ chmod -R 755 <Home-directory>
$ chmod -R 755 <Java-directory>