Uploaded image for project: 'Crowd Data Center'
  1. Crowd Data Center
  2. CWD-6188

Upgrading Crowd to the 5.2.x version failed when the datasource connection is used

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 5.2.2
    • 5.2.1
    • Upgrade
    • None

    Description

      Issue Summary

      This is reproducible on Data Center: (yes)

      Crowd 5.2 is supporting the datasource type of database configuration as it is displayed on a newly installed 5.2.1 instance.

      There is no mention of depreciation of the datasource configuration in the Release Notes either.

      While upgrading Crowd which is configured with datasource, to the 5.2.x version it gave an error on one of the upgrade tasks and caused upgrade failure.

      Steps to Reproduce

      1. Spin up a Crowd with a version lower than 5.2 and integrate it with the database using a datasource connection.
      2. Try to upgrade Crowd to the 5.2.x version. (I used 5.2.1 in my test, as it is the latest version released)

      Expected Results

      Crowd upgraded successfully.

      Actual Results

      Upgrade gets failed and the below message is shown in the UI:

      The below exception is thrown in the atlassian-crowd.log file:

      2023-11-30 15:29:47,430 main INFO [crowd.manager.upgrade.UpgradeManagerImpl] Upgrading Crowd to version: 5.2.1 (Build:#1942 - 2023-11-13) 
      2023-11-30 15:29:47,432 main INFO [crowd.manager.upgrade.UpgradeManagerImpl] Running upgrade task for build - 1939: Adds default User Added notification email template if no such template is present
      2023-11-30 15:29:47,563 main INFO [crowd.manager.upgrade.UpgradeManagerImpl] Running upgrade task for build - 1940: Migrates HSQL related configuration properties (if used) to be compatible with HSQL 2.x
      2023-11-30 15:29:47,566 main ERROR [crowd.manager.upgrade.UpgradeManagerImpl] java.lang.NullPointerException
      java.lang.RuntimeException: java.lang.NullPointerException
      	at com.atlassian.crowd.manager.upgrade.UpgradeManagerImpl.lambda$doUpgrade$0(UpgradeManagerImpl.java:129) ~[crowd-server-5.2.1.jar:?]
      	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.28.jar:5.3.28]
      	at com.atlassian.crowd.manager.upgrade.UpgradeManagerImpl.doUpgrade(UpgradeManagerImpl.java:124) ~[crowd-server-5.2.1.jar:?]
      	at com.atlassian.crowd.console.listener.StartupListener.migrateAndUpgradeCrowd(StartupListener.java:231) ~[classes/:?]
      	at com.atlassian.crowd.console.listener.StartupListener.checkLicenseAndPerformUpgrade(StartupListener.java:132) ~[classes/:?]
      	at com.atlassian.crowd.console.listener.StartupListener.contextInitialized(StartupListener.java:74) ~[classes/:?]
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4462) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4914) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:661) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:689) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1888) ~[catalina.jar:9.0.82]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-util.jar:9.0.82]
      	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) ~[?:?]
      	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:582) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:472) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1617) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:318) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:794) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) ~[catalina.jar:9.0.82]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-util.jar:9.0.82]
      	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) ~[?:?]
      	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:248) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:921) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) ~[catalina.jar:9.0.82]
      	at org.apache.catalina.startup.Catalina.start(Catalina.java:772) ~[catalina.jar:9.0.82]
      	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
      	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
      	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
      	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
      	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347) ~[bootstrap.jar:9.0.82]
      	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478) ~[bootstrap.jar:9.0.82]
      Caused by: java.lang.NullPointerException
      	at com.atlassian.crowd.upgrade.tasks.UpgradeTask1940UpdateHsqlHibernateProperties.isHsqlJdbcUrl(UpgradeTask1940UpdateHsqlHibernateProperties.java:71) ~[crowd-server-5.2.1.jar:?]
      	at com.atlassian.crowd.upgrade.tasks.UpgradeTask1940UpdateHsqlHibernateProperties.upgradeHibernateConnectionUrl(UpgradeTask1940UpdateHsqlHibernateProperties.java:64) ~[crowd-server-5.2.1.jar:?]
      	at com.atlassian.crowd.upgrade.tasks.UpgradeTask1940UpdateHsqlHibernateProperties.doUpgrade(UpgradeTask1940UpdateHsqlHibernateProperties.java:42) ~[crowd-server-5.2.1.jar:?]
      	at com.atlassian.crowd.manager.upgrade.UpgradeManagerImpl.lambda$doUpgrade$0(UpgradeManagerImpl.java:126) ~[crowd-server-5.2.1.jar:?]
      	... 46 more
      [...]
      2023-11-30 15:29:47,604 main ERROR [crowd.console.listener.StartupListener] Errors experienced during the Crowd upgrade process: [Upgrade task for build 1940 failed with exception: java.lang.NullPointerException]
      [...]
      2023-11-30 15:29:47,608 main ERROR [crowd.console.listener.StartupListener] Stopping Crowd startup due to earlier errors
      

      Workaround

      Changing the datasource type connection to the JDBC type connection solves the issue and unlocks the upgrade. After the upgrade gets finished and the Crowd gets back to its up-and-running state, you can stop the instance and revert back to datasource based on your preference.

      Attachments

        1. crowd_5.2_datasource.png
          crowd_5.2_datasource.png
          113 kB
        2. error_in_ui.png
          error_in_ui.png
          47 kB

        Activity

          People

            Unassigned Unassigned
            9f7de485df51 Basar Beykoz
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: