Uploaded image for project: 'Jira Cloud'
  1. Jira Cloud
  2. JRACLOUD-81915

Import issues from CSV fails with "Fatal error during import" when you have too many subtasks with the same parent

    XMLWordPrintable

Details

    Description

      Summary

      The non-admin "Import issues from CSV" tool fails with a fatal error when the CSV file has too many sub-tasks issues to be imported which parent is the same issue.

      Steps to Reproduce

      1. Have a CSV file with at least 300 lines and the "Parent ID" that points all to the same parent issue key
      2. Click "Issues" at the top bar and select "Import issues from CSV" option (non-admin CSV importer)
      3. Map the issue type field (in the CSV file this column must contain a sub-task issue type)
      4. Map the Parent ID field (in the CSV this column must contain an existing issue key from a standard issue type)

      Expected Results

      All issues are imported (you can increase the 250 issue limit on JIRA's advanced settings)

      Actual Results

      The import will fail at some point (on my tests it failed at 271 the first time and 284 the second time, but it can fail around 100 issues if the parent has a lot of issues)
      The importer logs shows the following error:

      2016-09-12 11:41:50,118 ERROR - Fatal error during import
      java.lang.IllegalArgumentException: Parent Issue cannot be null.
      	at com.atlassian.jira.config.DefaultSubTaskManager.createSubTaskIssueLink(DefaultSubTaskManager.java:412)
      	at sun.reflect.GeneratedMethodAccessor626.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy128.createSubTaskIssueLink(Unknown Source)
      	at sun.reflect.GeneratedMethodAccessor626.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
      	at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
      	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
      	at com.sun.proxy.$Proxy1253.createSubTaskIssueLink(Unknown Source)
      	at com.atlassian.jira.plugins.importer.compatibility.CompatibilityUtil70.createSubTaskIssueLink(CompatibilityUtil70.java:237)
      	at com.atlassian.jira.plugins.importer.compatibility.CompatibilityBridgeUtils.createSubTaskIssueLink(CompatibilityBridgeUtils.java:118)
      	at com.atlassian.jira.plugins.importer.imports.bulkcreate.engine.BulkCreateDataImporter.createSubTaskLink(BulkCreateDataImporter.java:328)
      	at com.atlassian.jira.plugins.importer.imports.bulkcreate.engine.BulkCreateDataImporter.doImportSubtasks(BulkCreateDataImporter.java:300)
      	at com.atlassian.jira.plugins.importer.imports.bulkcreate.engine.BulkCreateDataImporter.runImporterEngine(BulkCreateDataImporter.java:177)
      	at com.atlassian.jira.plugins.importer.imports.bulkcreate.engine.BulkCreateDataImporter.doImport(BulkCreateDataImporter.java:149)
      	at com.atlassian.jira.plugins.importer.imports.importer.impl.ImporterCallable.call(ImporterCallable.java:26)
      	at com.atlassian.jira.plugins.importer.imports.importer.impl.ImporterCallable.call(ImporterCallable.java:15)
      	at com.atlassian.jira.task.TaskManagerImpl$TaskCallableDecorator.call(TaskManagerImpl.java:445)
      	at com.atlassian.jira.task.TaskManagerImpl$TaskCallableDecorator.call(TaskManagerImpl.java:413)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at com.atlassian.jira.task.ForkedThreadExecutor$ForkedRunnableDecorator.run(ForkedThreadExecutor.java:216)
      	at java.lang.Thread.run(Thread.java:745)

      NOTE:

      The Validation step will fail with the error at the minimum 3 lines in the CSV required to meet this criteria, but the import will be successful until a larger set of data is used

      Workaround

      Use the CSV import from the External System Import in the Admin area (only JIRA Global Admins have access to this option)

      Attachments

        Activity

          People

            Unassigned Unassigned
            fwillig Felipevsw (Inactive)
            Votes:
            96 Vote for this issue
            Watchers:
            80 Start watching this issue

            Dates

              Created:
              Updated: