JsonSyntaxException: Expected BEGIN_ARRAY but was BEGIN_OBJECT error with Trello Importer

XMLWordPrintable

    • Type: Bug
    • Resolution: Won't Fix
    • Priority: Low
    • None
    • Affects Version/s: 7.10.1
    • Component/s: Jira Importers Plugin
    • None
    • 7.1
    • 17
    • Severity 2 - Major
    • 2

      Summary

      Importing certain Trello boards can fail abruptly with the following error message in the UI:

      Unexpected failure occurred. Importer will stop immediately. Data may be in an unstable state

      Steps to Reproduce

      Try to import a Trello board using JIRA's built-in (External System Import) Trello Importer that has a lot (1000+) of cards

      Expected Results

      The import finishes without errors

      Actual Results

      Import fails while the below exception is thrown in the atlassian-jira.log file:

      2018-06-22 19:19:14,888 JiraTaskExectionThread-1 ERROR jira_admin 1159x88x1 1mokn77 192.168.1.101 /secure/admin/ImporterLogsPage%21import.jspa [c.a.j.p.i.i.importer.impl.AbstractDataImporter$1Thread[http-nio-8080-exec-9,5,main]] Unexpected failure occurred. Importer will stop immediately. Data may be in an unstable state
      com.atlassian.jira.plugins.importer.trello.fetch.TrelloParseException: Error "{"message":"Requested too many cards with action loads, please limit","error":"API_TOO_MANY_CARDS_REQUESTED"}" returned when getting cards for board with ID {1}.
      	at com.atlassian.jira.plugins.importer.trello.fetch.TrelloParser.getCards(TrelloParser.java:86)
      	at com.atlassian.jira.plugins.importer.trello.TrelloImporterClient.getTotalIssues(TrelloImporterClient.java:111)
      	at com.atlassian.jira.plugins.importer.trello.TrelloImporterDataBean.getTotalIssues(TrelloImporterDataBean.java:105)
      	at com.atlassian.jira.plugins.importer.imports.importer.impl.DefaultJiraDataImporter.doImport(DefaultJiraDataImporter.java:407)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	... 2 filtered
      	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.$Proxy1381.doImport(Unknown Source)
      	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:458)
      	at com.atlassian.jira.task.TaskManagerImpl$TaskCallableDecorator.call(TaskManagerImpl.java:426)
      	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)
      Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
      	at com.google.gson.Gson.fromJson(Gson.java:801)
      	at com.google.gson.Gson.fromJson(Gson.java:756)
      	at com.google.gson.Gson.fromJson(Gson.java:705)
      	at com.atlassian.jira.plugins.importer.trello.fetch.TrelloParser.getCards(TrelloParser.java:83)
      	... 33 more
      	at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:328)
      	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:79)
      	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
      	at com.google.gson.Gson.fromJson(Gson.java:790)
      

      Notes

      The JIM plugin tries to get all of the cards from a Trello board in a single request (using this endpoint), hitting the API limits, resulting in an error response.

      Workaround

      Manually breaking the Trello board into a few smaller ones will help not hitting the API limits.

            Assignee:
            Unassigned
            Reporter:
            Taiwo Akindele (Inactive)
            Votes:
            29 Vote for this issue
            Watchers:
            24 Start watching this issue

              Created:
              Updated:
              Resolved: