Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-62338

Update Default Confluence Configuration


    • Icon: Suggestion Suggestion
    • Resolution: Fixed
    • 7.12.0
    • Other
    • None
    • We collect Confluence feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      This ticket documents a number of configuration changes made to Confluence for version 7.12.0.

      Database Configuration

      Confluence now takes advantage of the JDBC4 isValid method to check if a database connection is alive prior to use. Previously a validation query could be set manually to enable this functionality. By using the isValid method, the driver will now determine the best way to check a connection. This results in a small performance improvement, but is mainly about simplifying config.

      The new configuration is defined out of the box, and existing customers configurations will be updated with an upgrade task to save you some time

      confluence.cfg.xml changes
      # Removed
      <property name="hibernate.c3p0.preferredTestQuery">SELECT 1</property>
      # Added
      <property name="hibernate.c3p0.validate">true</property>

      Java Configuration and Setenv.sh Changes

      The setenv.sh file is used to configure Java and environment options. With this change, the setenv.sh file is now broken into segments with the most commonly modified options in easy to change setting blocks. Hopefully this will make configuration easier, and make moving configuration changes between Confluence versions simpler.

      In addition to this change, we've updated the default Java configuration shipped with Confluence

      The following items were removed as they're configured by the JVM as defaults

      1. -XX:+UseCodeCacheFlushing
      2. -XX:-PrintGCDetails
      3. -XX:-PrintTenuringDistribution
      4. -XX:+PrintGCCause

      We also removed a configuration that forced TLSv1.1/1.2 that was used to mitigate a bug in Java 11. The removal of this workaround was enabled by the JDK fixing the relevant bugs. The JDK will now negotiate the appropriate TLS version at runtime.

      Finally, we've added the following configuration

      1. -XX:+ExplicitGCInvokesConcurrent
      2. Large to Enterprise Scale Configuration Options
        #CATALINA_OPTS="-XX:ReservedCodeCacheSize=384m ${CATALINA_OPTS}"
        #CATALINA_OPTS="-XX:+PrintTenuringDistribution ${CATALINA_OPTS}"
        #CATALINA_OPTS="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps ${CATALINA_OPTS}"
        #CATALINA_OPTS="-Dconfluence.upgrade.recovery.file.enabled=false ${CATALINA_OPTS}"${CATALINA_OPTS}"

      With the addition of -XX:+ExplicitGCInvokesConcurrent, we recommend the removal of -XX:+DisableExplicitGC. This change was made to reduce the chance of OutOfMemoryError occurring in certain native memory operations.

      The Large to Enterprise Scale Configuration Options block contains settings we recommend for our largest customers. These options will not benefit our smaller customers, but should allow easier configuration when required.

      Windows Configurations

      Finally, we attempted to bring Windows and Linux configurations into alignment as detailed in CONFSERVER-53524: Service.sh and setenv.bat files set different Java options. The Windows service now installs with the same configurations as Windows and Linux run scripts.

      As part of this work, we identified an additional bug with regards to Java 11 Garbage Collection logging. It is currently tracked at CONFSERVER-61415: Java 11 Garbage Collection Logging Settings Are Not Correctly Applied on Confluence Start. Once we are able to resolve this issue, we'll be able to close both tickets.

            jponting James Ponting
            jponting James Ponting
            0 Vote for this issue
            3 Start watching this issue