Class AbstractUpgradeManager

    • Field Detail

      • MAXIMUM_CLOUD_BUILD_VERSION_NUMBER

        protected static final int MAXIMUM_CLOUD_BUILD_VERSION_NUMBER
        In Confluence 8.0.0 we have removed upgrade tasks with build numbers lower than 7103 Cloud's build number is still that of the fork "6452", so our build number is too high. This temporary fix ensures the build number is what cloud expects until we update the logic regarding cloud server compatibility.
        See Also:
        Constant Field Values
    • Constructor Detail

      • AbstractUpgradeManager

        public AbstractUpgradeManager()
    • Method Detail

      • setBeanFactory

        public void setBeanFactory​(org.springframework.beans.factory.BeanFactory beanFactory)
        Specified by:
        setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
      • setApplicationConfig

        public void setApplicationConfig​(com.atlassian.config.ApplicationConfiguration applicationConfig)
      • setUpgradedFlag

        public void setUpgradedFlag​(com.atlassian.confluence.upgrade.MutableUpgradedFlag upgradedFlag)
      • afterPropertiesSet

        public void afterPropertiesSet()
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      • validateSchemaUpdateIfNeeded

        protected abstract void validateSchemaUpdateIfNeeded()
                                                      throws com.atlassian.config.ConfigurationException
        Throws:
        com.atlassian.config.ConfigurationException
      • updateSchemaIfNeeded

        protected abstract void updateSchemaIfNeeded()
                                              throws com.atlassian.config.ConfigurationException
        Throws:
        com.atlassian.config.ConfigurationException
      • releaseSchemaReferences

        protected abstract void releaseSchemaReferences()
      • neededSchemaUpgrade

        protected boolean neededSchemaUpgrade()
      • getAllUpgradeTasks

        protected List<UpgradeTask> getAllUpgradeTasks()
        Returns:
        the complete list of upgrade tasks for checking space import/export compatibility, in the correct order.
      • getAllUpgradeTasksInfo

        public Collection<UpgradeTaskInfo> getAllUpgradeTasksInfo()
        While this could just return the list of UpgradeTasks directly (since UpgradeTask implements UpgradeTaskInfo), we re-wrap them here to prevent plugins from casting them to UpgradeTask and trying to execute them. That would be bad.
        Specified by:
        getAllUpgradeTasksInfo in interface UpgradeTaskInfoService
        Returns:
        a Collection of UpgradeTaskInfo objects, one for each UpgradeTask in the system, in no particular order.
      • getUpgradeTasksToRun

        protected List<UpgradeTask> getUpgradeTasksToRun()
        Returns:
        the complete list of upgrade tasks to be run for this upgrade, in the correct order. Note: this excludes pre-schema upgrade tasks
      • upgradeStarted

        protected void upgradeStarted()
      • getPreSchemaUpgradeTasks

        public List<UpgradeTask> getPreSchemaUpgradeTasks()
      • setPreSchemaUpgradeTasks

        public void setPreSchemaUpgradeTasks​(List<UpgradeTask> preSchemaUpgradeTasks)
      • setPreSchemaUpgradeTaskNames

        public void setPreSchemaUpgradeTaskNames​(List<String> preSchemaUpgradeTaskNames)
        Since:
        7.5
      • setUpgradeTasks

        public void setUpgradeTasks​(List<UpgradeTask> upgradeTasks)
      • setUpgradeTaskNames

        public void setUpgradeTaskNames​(List<String> upgradeTaskNames)
        Since:
        7.5
      • setPluginAccessor

        public void setPluginAccessor​(com.atlassian.plugin.PluginAccessor pluginAccessor)
      • setSchemaUpgradeTasks

        public void setSchemaUpgradeTasks​(List<UpgradeTask> upgradeTasks)
      • setSchemaUpgradeTaskNames

        public void setSchemaUpgradeTaskNames​(List<String> upgradeTaskNames)
        Since:
        7.5
      • setPluginDependentUpgradeTasks

        public void setPluginDependentUpgradeTasks​(List<DeferredUpgradeTask> upgradeTasks)
      • setPluginDependentUpgradeTaskNames

        public void setPluginDependentUpgradeTaskNames​(List<String> upgradeTaskNames)
        Since:
        7.5
      • runUpgradePrerequisites

        protected abstract List<UpgradeError> runUpgradePrerequisites()
        Runs all upgrade prerequisites.
        Returns:
        an empty list if all upgrade prerequisites pass, otherwise, returns a list consisting of one or more failure messages.
      • getConfiguredBuildNumber

        protected String getConfiguredBuildNumber()
        Returns:
        The build number of the current version that the user is running under. This version is stored in their confluence home confluence.cfg.xml file
      • setConfiguredBuildNumber

        protected void setConfiguredBuildNumber​(String buildNumber)
                                         throws com.atlassian.config.ConfigurationException
        Throws:
        com.atlassian.config.ConfigurationException
      • configuredBuildNumberNewerThan

        public boolean configuredBuildNumberNewerThan​(String buildNumber)
        Description copied from interface: UpgradeManager
        Returns true if the passed build number is less than the configured build number - that is, the version of the currently running Confluence is newer than the version passed.
        Specified by:
        configuredBuildNumberNewerThan in interface UpgradeManager
      • taskNewerThan

        public boolean taskNewerThan​(String buildNumber,
                                     UpgradeTask upgradeTask)
        Description copied from interface: UpgradeManager
        Returns true if the build number for the task is greater than the passed build number. Usually indicates that the task should run as part of an upgrade.
        Specified by:
        taskNewerThan in interface UpgradeManager
      • initialUpgradeFinished

        protected void initialUpgradeFinished()
                                       throws Exception
        Once all upgrade tasks have been completed without error, make sure the build number stored in the applications main configuration file and database now matches the build number of this version of the release.

        Note that this method is called "initialUpgradeFinished" because any deferred pluginDependentUpgradeTasks may still have to run, so the upgrade process is not yet complete.

        Throws:
        Exception - when setting the database or configuration build number fails
      • entireUpgradeFinished

        public void entireUpgradeFinished()
        Description copied from interface: UpgradeManager
        Called when all immediate and deferred upgrade actions have been performed *if* an upgrade was needed.
        Specified by:
        entireUpgradeFinished in interface UpgradeManager
      • getRealBuildNumber

        protected abstract String getRealBuildNumber()
        Returns:
        The build number of the new version of Confluence being upgraded to. This number can be found in the default.properties of the new expanded WAR
      • getDatabaseBuildNumber

        protected abstract String getDatabaseBuildNumber()
        Returns:
        The build number of the data in the database. If the version of the database data can not be determined, this method should return the same value as getConfiguredBuildNumber().
      • setDatabaseBuildNumber

        protected abstract void setDatabaseBuildNumber​(String databaseBuildNumber)
                                                throws Exception
        Once the upgrade is complete, we'll need to set the new database build number in the database.
        Parameters:
        databaseBuildNumber - The new database build number
        Throws:
        Exception - when there is any problem setting the database build number
      • permitDatabaseUpgrades

        protected boolean permitDatabaseUpgrades()
                                          throws UpgradeException
        This is used to guard against database upgrades being performed multiple times on the same database. By default, assume a non-clustered setup and allow database upgrades.
        Returns:
        True by default. Is overridden for cluster upgrades.
        Throws:
        UpgradeException - If the implementation of this method encounters any errors.
      • postUpgrade

        protected void postUpgrade()
      • isUpgraded

        public boolean isUpgraded()
        Specified by:
        isUpgraded in interface UpgradeManager
        Returns:
        true if the UpgradeManager was able to successfully upgrade this instance, or if no upgrade was necessary; otherwise false.
      • getExportBuildNumber

        public String getExportBuildNumber​(boolean isSpaceExport)
        Description copied from interface: UpgradeManager
        Tells the earliest version the exports will be compatible with.
        Specified by:
        getExportBuildNumber in interface UpgradeManager
        Parameters:
        isSpaceExport - true if the export is about a space, false for a global export.
        Returns:
        a build number
      • getPluginExportCompatibility

        public Map<String,​PluginExportCompatibility> getPluginExportCompatibility​(boolean isSpaceExport)
        Description copied from interface: UpgradeManager

        Returns the list of plugins with data (especially plugins with Active Objects data) and tells how backward-compatible they are.

        If at least one plugin isn't compatible, the importer silently doesn't import any data.

        What is a compatible version?

        The data is exported as-is in XML and reimported in an earlier version. If the earlier version of the plugin is able to read the data without fault, then it is compatible. Note that there is no downgrade task, obviously.

        Specified by:
        getPluginExportCompatibility in interface UpgradeManager
        Parameters:
        isSpaceExport - true if the export is about a space, false for a global export.
        Returns:
        a matrix of plugin key and minimum versions of the plugins.