Uploaded image for project: 'Jira Service Management Data Center'
  1. Jira Service Management Data Center
  2. JSDSERVER-15324

Performing a bulk move on issues tied to Assets Objects can result in a Null Pointer Exception

      Issue Summary

       
      Performing a bulk move on issues tied to Assets Objects can result in a Null Pointer Exception and a 500 error screen when moving to the field mapping page of the bulk move.  

      Steps to Reproduce

      We have not been able to replicate this behavior internally, but the issue was uncovered via a support issue. It was likely introduced via validation changes made for Jira 5.13 and higher.

      1. Attempt to perform a bulk move from one project to another project that contains an Assets Custom Field in both projects
      2. After selecting the issues that contain the Assets Custom Field, select the project and new issue type to move the issue to
      3. Select next to move to the field mapping screen

      Expected Results

      It would be expected that you would be able to map the fields and continue with the bulk move as you would for any projects not containing the Assets Custom Field.

      Actual Results

      An NPE occurs and the on the frontend the user will see a 500 error screen.

      The NPE is within the atlassian-jira.log file:

      2024-04-30 20:44:21,653+0000 http-nio-8080-exec-174 ERROR      [o.a.c.c.C.[.[localhost].[/].[action]] Servlet.service() for servlet [action] in context with path [] threw exception [java.lang.NullPointerException] with root cause
      java.lang.NullPointerException
      	at java.base/java.util.Objects.requireNonNull(Unknown Source)
      	at java.base/java.util.Arrays$ArrayList.<init>(Unknown Source)
      	at java.base/java.util.Arrays.asList(Unknown Source)
      	at com.riadalabs.jira.plugins.insight.services.jira.customfield.DefaultObjectCustomField.getStringListMap(DefaultObjectCustomField.java:839)
      	at com.riadalabs.jira.plugins.insight.services.jira.customfield.DefaultObjectCustomField.getcustomFieldScopedIql(DefaultObjectCustomField.java:851)
      	at com.riadalabs.jira.plugins.insight.services.jira.customfield.DefaultObjectCustomField.isValidObjectBeanScope(DefaultObjectCustomField.java:880)
      	at com.riadalabs.jira.plugins.insight.services.jira.customfield.DefaultObjectCustomField.determineObjectBean(DefaultObjectCustomField.java:766)
      	at com.riadalabs.jira.plugins.insight.services.jira.customfield.DefaultObjectCustomField.validateFromParams(DefaultObjectCustomField.java:598)
      	at com.atlassian.jira.issue.fields.ImmutableCustomField.needsMove(ImmutableCustomField.java:1085)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.fieldNeedsMove(BulkMoveOperationImpl.java:1016)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.checkIfFieldsNeedsToBeMoved(BulkMoveOperationImpl.java:937)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.finishChooseContext(BulkMoveOperationImpl.java:494)
      	at com.atlassian.jira.bulkedit.operation.BulkMoveOperationImpl.finishChooseContext(BulkMoveOperationImpl.java:486)
      	at com.atlassian.jira.web.action.issue.bulkedit.BulkMigrate.doChooseContext(BulkMigrate.java:164)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
      	at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70)
      	at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56)
      	... 2 filtered
      	at com.atlassian.jira.web.action.JiraWebActionSupport.execute(JiraWebActionSupport.java:1382)
      	... 7 filtered
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
      	... 48 filtered
      	at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:55)
      	... 4 filtered
      	at com.atlassian.greenhopper.jira.filters.ClassicBoardRouter.doFilter(ClassicBoardRouter.java:56)
      	... 7 filtered
      	at com.atlassian.diagnostics.internal.platform.monitor.http.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:54)
      	... 8 filtered
      	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
      	... 4 filtered
      	at com.atlassian.app.usage.core.features.user.interaction.servlet.filter.CapturingServletFilter.doFilter(CapturingServletFilter.kt:38)
      	... 3 filtered
      	at com.atlassian.app.usage.core.features.common.usage.rest.filter.CapturingRestFilter.doFilter(CapturingRestFilter.kt:36)
      	... 47 filtered
      

      Workaround

      A workaround is to add assets.aql.scope.filtering.on.issue.update.disabled in the Jira Dark Features. This will disable a validation check added in Jira 5.13.0. Then the bulk move should proceed. Once that move is completed, the feature can be re-enabled moving forward.

            [JSDSERVER-15324] Performing a bulk move on issues tied to Assets Objects can result in a Null Pointer Exception

            Marc Dacanay made changes -
            Labels Original: ltsr
            Marc Dacanay made changes -
            Remote Link New: This issue links to "Page (Confluence)" [ 938697 ]
            Marc Dacanay made changes -
            Labels New: ltsr
            Satej Mirpagar made changes -
            Resolution New: Fixed [ 1 ]
            Status Original: Waiting for Release [ 12075 ] New: Closed [ 6 ]
            Christopher Bowles made changes -
            Fix Version/s New: 5.17.0 [ 107827 ]
            Christopher Bowles made changes -
            Assignee New: Shreyans Jain [ 9e460d4f5ba4 ]
            server-jirasync-bot made changes -
            Status Original: In Progress [ 3 ] New: Waiting for Release [ 12075 ]
            server-jirasync-bot made changes -
            Status Original: Short Term Backlog [ 12074 ] New: In Progress [ 3 ]
            SET Analytics Bot made changes -
            Support reference count New: 1
            Christopher Bowles made changes -
            Component/s New: Assets - Core experiences [ 63613 ]
            Priority Original: Low [ 4 ] New: Medium [ 3 ]
            Status Original: Needs Triage [ 10030 ] New: Short Term Backlog [ 12074 ]

              9e460d4f5ba4 Shreyans Jain
              d382421eef02 Andy Rusnak
              Affected customers:
              1 This affects my team
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: