Class AddMissingUnmanagedUniqueConstraintsUpgradeTask

  • All Implemented Interfaces:
    BackupSupport, DatabaseUpgradeTask, UpgradeTask, UpgradeTaskInfo, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware

    public class AddMissingUnmanagedUniqueConstraintsUpgradeTask
    extends AbstractUpgradeTask
    implements DatabaseUpgradeTask
    Because of CONFSERVER-38706, some unique constraints which are not managed by Hibernate have been missing for instances freshly installed with Confluence 5.6 - 5.8. Affected constraints can be found in findAllConstraints()} This Upgrade task aims to add all of them gracefully and seamlessly. Duplicates are removed if any before constraints are added.
    Since:
    7.1.0
    • Constructor Detail

      • AddMissingUnmanagedUniqueConstraintsUpgradeTask

        public AddMissingUnmanagedUniqueConstraintsUpgradeTask​(ConstraintChecker constraintChecker,
                                                               Deduper deduper,
                                                               ConstraintCreator constraintCreator,
                                                               com.atlassian.event.api.EventPublisher eventPublisher)
    • Method Detail

      • runOnSpaceImport

        public boolean runOnSpaceImport()
        Description copied from interface: BackupSupport
        Returns true if an older Space can't be imported in a new instance without running this task. For example:
        • A task updating macro names in the BodyContent table would be blocking.
        • Tasks which updates data related to the space would be blocking.
        • A task upgrading the user table wouldn't be blocking.
        • Adding a mandatory column on space-related content breaks space import

        Note that tasks don't run on space import yet, so we just reject the import in this case.

        Specified by:
        runOnSpaceImport in interface BackupSupport
      • breaksBackwardCompatibility

        public boolean breaksBackwardCompatibility()
        Description copied from interface: BackupSupport
        Returns true if a new export can't be imported in an older instance.

        Breaking compatibility means a snapshot of the new version will not work at all with the previous version. For example:

        • A destructive operation (Some data is replaced by another) breaks backwards compatibility
        • Adding a optional column does NOT break backwards compatibility
        • Data is copied to another column doesn't breaks backwards compatibility
        • A build number incrementation doesn't breaks backwards compatibility
        The best way to test is whether a newer export can be imported (with fully working features) in an older instance.
        Specified by:
        breaksBackwardCompatibility in interface BackupSupport
      • init

        @PostConstruct
        public void init()
      • cleanup

        @PreDestroy
        public void cleanup()