Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-76099

Jira 9.4.8 Upgrade Task to Update Archived Issues Fails with More than 2100 Projects in MS SQL

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: High High
    • 9.12.26, 10.3.9, 11.0.0
    • 9.4.8, 9.12.24, 10.3.7, 10.6.1
    • Upgrade
    • None
    • 9.04
    • 9
    • Severity 2 - Major
    • 4
    • Hide
      Atlassian Update – 9 June 2025

      It appears the fix for JRASERVER-78388 caused a regression which affects Jira Data Center version 9.12.18 and above.

      See Workaround section below

      Atlassian Update – 14 September 2023

      Dear Customers,

      We're happy to announce that this issue is fixed in JSW 9.4.11 (JSM 5.4.11.) release.

      The problematic UpgradeTask has been rewritten to work with any number of projects regardless of database being used.

      Best regards

      Jakub Reczycki
      Senior Software Engineer

      Show
      Atlassian Update – 9 June 2025 It appears the fix for JRASERVER-78388 caused a regression which affects Jira Data Center version 9.12.18 and above. See Workaround section below Atlassian Update – 14 September 2023 Dear Customers, We're happy to announce that this issue is fixed in JSW 9.4.11 (JSM 5.4.11.) release. The problematic UpgradeTask has been rewritten to work with any number of projects regardless of database being used. Best regards Jakub Reczycki Senior Software Engineer

      Issue Summary

      This is reproducible on Data Center: (yes)

      The upgrade task "UpgradeTask_Build940008" in Jira 9.4.8 and "UpgradeTask_Build960000.java" in Jira 9.6.0 fails to count for MS SQL's maximum of 2100 parameter limit for SQL statements while trying to set issues with the archived flag. Giving more than 2100 project names in the update SQL causes the upgrade to fail. 

      Steps to Reproduce

      1. Create a Jira instance with more than 2100 archived projects with MS SQL as DB
      2. Try to upgrade to Jira 9.4.6 or 9.6.0

      Expected Results

      Upgrade completes normally

      Actual Results

      Upgrade fails with for task UpgradeTask_Build940008 (9.4.8) or UpgradeTask_Build960000 (9.6) with MS SQL exception

      The below exception is thrown in the xxxxxxx.log file:

      2023-07-25 08:57:16,110+0100  main ERROR      [c.a.upgrade.core.DefaultUpgradeTaskFactoryProcessor] Upgrade task [host,buildNumber=940008] failed
      java.lang.RuntimeException: Error running original upgrade task
      	at com.atlassian.jira.upgrade.AbstractUpgradeTask.runUpgrade(AbstractUpgradeTask.java:63)
      	at com.atlassian.upgrade.core.DefaultUpgradeTaskFactoryProcessor.runOneUpgradeTask(DefaultUpgradeTaskFactoryProcessor.java:109)
      	at com.atlassian.upgrade.core.DefaultUpgradeTaskFactoryProcessor.lambda$performUpgradesUnsafe$13(DefaultUpgradeTaskFactoryProcessor.java:80)
      	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
      	at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:400)
      	at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:258)
      	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:503)
      	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
      	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
      	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
      	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
      	at com.atlassian.upgrade.core.DefaultUpgradeTaskFactoryProcessor.performUpgradesUnsafe(DefaultUpgradeTaskFactoryProcessor.java:81)
      	at com.atlassian.upgrade.core.DefaultUpgradeTaskFactoryProcessor.performUpgrades(DefaultUpgradeTaskFactoryProcessor.java:46)
      	at com.atlassian.upgrade.core.DefaultUpgradeTaskManager.upgradeHostApp(DefaultUpgradeTaskManager.java:41)
      	at com.atlassian.jira.upgrade.LicenseCheckingUpgradeService.executeUpgrades(LicenseCheckingUpgradeService.java:134)
      	at com.atlassian.jira.upgrade.LicenseCheckingUpgradeService.runUpgrades(LicenseCheckingUpgradeService.java:97)
      	at com.atlassian.jira.upgrade.ClusterLockingUpgradeService.runUpgrades(ClusterLockingUpgradeService.java:35)
      	at com.atlassian.jira.upgrade.LoggingUpgradeService.lambda$runUpgradesWithLogging$0(LoggingUpgradeService.java:28)
      	at com.atlassian.jira.upgrade.LoggingUpgradeService.runWithTaskLogging(LoggingUpgradeService.java:43)
      	at com.atlassian.jira.upgrade.LoggingUpgradeService.runUpgradesWithLogging(LoggingUpgradeService.java:28)
      	at com.atlassian.jira.upgrade.IndexingUpgradeService.runUpgrades(IndexingUpgradeService.java:19)
      	at com.atlassian.jira.upgrade.DefaultUpgradeService.runUpgrades(DefaultUpgradeService.java:61)
      	at com.atlassian.jira.upgrade.UpgradeLauncher.upgradeIfNeeded(UpgradeLauncher.java:109)
      	at com.atlassian.jira.upgrade.UpgradeLauncher.start(UpgradeLauncher.java:86)
      	at com.atlassian.jira.startup.ActiveServicesLauncher.start(ActiveServicesLauncher.java:50)
      	at com.atlassian.jira.startup.DefaultJiraLauncher.postDBActivated(DefaultJiraLauncher.java:170)
      	at com.atlassian.jira.startup.DefaultJiraLauncher.lambda$postDbLaunch$2(DefaultJiraLauncher.java:144)
      	at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrEnqueue(DatabaseConfigurationManagerImpl.java:307)
      	at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrWhenDatabaseActivated(DatabaseConfigurationManagerImpl.java:202)
      	at com.atlassian.jira.startup.DefaultJiraLauncher.postDbLaunch(DefaultJiraLauncher.java:135)
      	at com.atlassian.jira.startup.DefaultJiraLauncher.lambda$start$0(DefaultJiraLauncher.java:102)
      	at com.atlassian.jira.util.devspeed.JiraDevSpeedTimer.run(JiraDevSpeedTimer.java:31)
      	at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:100)
      	at com.atlassian.jira.startup.LauncherContextListener.initSlowStuff(LauncherContextListener.java:154)
      	at com.atlassian.jira.startup.LauncherContextListener.initSlowStuffInBackground(LauncherContextListener.java:139)
      	at com.atlassian.jira.startup.LauncherContextListener.contextInitialized(LauncherContextListener.java:101)
      	... 5 filtered
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
      	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
      	... 5 filtered
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
      	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
      	... 8 filtered
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	... 2 filtered
      Caused by: com.querydsl.core.QueryException: Caught SQLServerException for update dbo.jiraissue
      set archived = ?
      where (jiraissue.project in (?, ?, ?, ?, ?....
      
      > Shortened
       
      ...., ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)) and (jiraissue.archived = ? or jiraissue.archived is null)
      	at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50)
      	at com.querydsl.sql.Configuration.translate(Configuration.java:459)
      	at com.querydsl.sql.dml.SQLUpdateClause.execute(SQLUpdateClause.java:217)
      	... 2 filtered
      	at com.atlassian.jira.database.DefaultQueryDslAccessor.lambda$executeQuery$0(DefaultQueryDslAccessor.java:64)
      	at com.atlassian.jira.database.DatabaseAccessorImpl.lambda$runInTransaction$0(DatabaseAccessorImpl.java:105)
      	at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74)
      	at com.atlassian.jira.database.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:100)
      	at com.atlassian.jira.database.DefaultQueryDslAccessor.executeQuery(DefaultQueryDslAccessor.java:63)
      	at com.atlassian.jira.upgrade.tasks.UpgradeTask_Build940008.doUpgrade(UpgradeTask_Build940008.java:78)
      	at com.atlassian.jira.upgrade.AbstractUpgradeTask.runUpgrade(AbstractUpgradeTask.java:61)
      	... 66 more
      Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The incoming request has too many parameters. The server supports a maximum of 2100 parameters. Reduce the number of parameters and resend the request.
      	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:262)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1632)
      	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:602)
      	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:524)
      	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7418)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:247)
      	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:222)
      	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:473)
      	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
      	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98)
      	at com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:47)
      	at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.lambda$executeUpdate$7(DiagnosticPreparedStatement.java:69)
      	at com.atlassian.diagnostics.internal.platform.monitor.db.DefaultDatabaseDiagnosticsCollector.recordExecutionTime(DefaultDatabaseDiagnosticsCollector.java:91)
      	at com.atlassian.jira.diagnostic.connection.DatabaseDiagnosticsCollectorDelegate.recordExecutionTime(DatabaseDiagnosticsCollectorDelegate.java:62)
      	at com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.executeUpdate(DiagnosticPreparedStatement.java:69)
      	at com.querydsl.sql.dml.SQLUpdateClause.execute(SQLUpdateClause.java:203)
      

      Workaround

      1. Intermediate upgrade.
      If upgrading from versions prior to 9.4.30, upgrade to 9.4.30 first, then upgrade to the intended release of Jira Data Center
      2. SQL workaround

      • As part of the upgrade process, shut down the current version of Jira, then run the following SQL before upgrading:
        UPDATE jiraissue
        SET archived = 'Y'
        WHERE project IN (
            SELECT entity_id
            FROM propertyentry
            LEFT JOIN propertynumber ON propertyentry.id = propertynumber.id
            WHERE propertyentry.property_key = 'jira.archiving.projects'
            AND propertynumber.propertyvalue = 1
        )
        AND (archived = 'N' OR archived IS NULL);
        
      • Upgrade to the intended version ( after 9.4.30 ) and wait for Jira Data Center to become available- build task 960000 will fail.
      • Shut Jira Data Center down and perform the following SQL:
        UPDATE upgradetaskhistory SET status = 'COMPLETED' WHERE upgrade_task_factory_key = 'host' AND build_number = 960000;
        
      • Start Jira Data Center which will run the remaining upgrade tasks.
        • If after 5 minutes Jira Data Center doesn't run the remaining upgrade tasks, send a POST call to /rest/api/2/upgrade

              5d32f8ce8c3b Piotr Juszczyński
              c55b673763fb Alper Firengiz (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              12 Start watching this issue

                Created:
                Updated:
                Resolved: