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

OnDemand JIRA import can fail with NPE in DefaultReindexMessageManager.clearMessageForTimestamp() due to multiple re-indexes running in parallel

    XMLWordPrintable

Details

    Description

      JIRA import can fail in OD during re-indexing with a message like the one below in the logs.

      The problem is that 2 re-indexes are kicked off in parallel when the upgrade tasks run during the import. One is triggered by UT055UseDefaultPaths in a new thread, and the other is triggered by UT066StripCustomSearchFieldDescriptions in the import thread, which leads to a race condition.

      Both re-index jobs identify a message from a prior re-index to be deleted, but the first wins the race to delete of the message, such that when the second attempts to do so, it fails with the NPE here.

      I suspect the parallel triggered by UT055UseDefaultPaths is unnecessary.

      2013-01-21 18:17:30,427 JiraImportTaskExecutionThread-1 ERROR sysadmin 1090x540x1 gzijnl 59.167.133.100,59.167.29.201 /secure/admin/StudioImport!import.jspa [jira.util.index.CompositeIndexLifecycleManager] Reindex All FAILED.  Indexer: DefaultIndexManager: paths: [/data/jirastudio/jira/home/caches/indexes/comments, /data/jirastudio/jira/home/caches/indexes/issues, /data/jirastudio/jira/home/caches/indexes/changes]
      java.lang.NullPointerException
            at java.util.Date.getMillisOf(Date.java:939)
            at java.util.Date.before(Date.java:898)
            at com.atlassian.jira.config.DefaultReindexMessageManager.clearMessageForTimestamp(DefaultReindexMessageManager.java:212)
            at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexAll(DefaultIndexManager.java:349)
            at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexAll(DefaultIndexManager.java:301)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.util.profiling.object.ObjectProfiler.profiledInvoke(ObjectProfiler.java:81)
            at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:28)
            at $Proxy157.reIndexAll(Unknown Source)
            at com.atlassian.jira.util.index.CompositeIndexLifecycleManager.reIndexAll(CompositeIndexLifecycleManager.java:54)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
            at $Proxy388.reIndexAll(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154)
            at $Proxy388.reIndexAll(Unknown Source)
            at com.atlassian.studio.jira.importer.impl.LegacyStudioImportManager.postImportStudify(LegacyStudioImportManager.java:134)
            at com.atlassian.studio.jira.importer.impl.StudioImporterFacade.postImportStudify(StudioImporterFacade.java:99)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.doStudioImportTasks(StudioDataImportAsyncCommand.java:264)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.call(StudioDataImportAsyncCommand.java:146)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.call(StudioDataImportAsyncCommand.java:48)
            at com.atlassian.jira.task.ImportTaskManagerImpl$TaskCallableDecorator.call(ImportTaskManagerImpl.java:146)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
      2013-01-21 18:17:30,430 JiraImportTaskExecutionThread-1 ERROR sysadmin 1090x540x1 gzijnl 59.167.133.100,59.167.29.201 /secure/admin/StudioImport!import.jspa [jira.studio.importer.StudioImport] Unexpected error while restoring data: com.atlassian.studio.host.common.DataSetupException: Error reindexing
      com.atlassian.studio.host.common.DataSetupException: Error reindexing
            at com.atlassian.studio.jira.importer.impl.LegacyStudioImportManager.postImportStudify(LegacyStudioImportManager.java:139)
            at com.atlassian.studio.jira.importer.impl.StudioImporterFacade.postImportStudify(StudioImporterFacade.java:99)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.doStudioImportTasks(StudioDataImportAsyncCommand.java:264)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.call(StudioDataImportAsyncCommand.java:146)
            at com.atlassian.jira.studio.importer.StudioDataImportAsyncCommand.call(StudioDataImportAsyncCommand.java:48)
            at com.atlassian.jira.task.ImportTaskManagerImpl$TaskCallableDecorator.call(ImportTaskManagerImpl.java:146)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
            at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
            at java.util.concurrent.FutureTask.run(FutureTask.java:138)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
      Caused by: java.lang.NullPointerException
            at java.util.Date.getMillisOf(Date.java:939)
            at java.util.Date.before(Date.java:898)
            at com.atlassian.jira.config.DefaultReindexMessageManager.clearMessageForTimestamp(DefaultReindexMessageManager.java:212)
            at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexAll(DefaultIndexManager.java:349)
            at com.atlassian.jira.issue.index.DefaultIndexManager.reIndexAll(DefaultIndexManager.java:301)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.util.profiling.object.ObjectProfiler.profiledInvoke(ObjectProfiler.java:81)
            at com.atlassian.jira.config.component.SwitchingInvocationHandler.invoke(SwitchingInvocationHandler.java:28)
            at $Proxy157.reIndexAll(Unknown Source)
            at com.atlassian.jira.util.index.CompositeIndexLifecycleManager.reIndexAll(CompositeIndexLifecycleManager.java:54)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
            at $Proxy388.reIndexAll(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154)
            at $Proxy388.reIndexAll(Unknown Source)
            at com.atlassian.studio.jira.importer.impl.LegacyStudioImportManager.postImportStudify(LegacyStudioImportManager.java:134)
            ... 13 more
      

      This was originally identified in support case JST-54019.

      Attachments

        Activity

          People

            mhenderson Marty Henderson (Inactive)
            rfernandes Robin Fernandes (go/robinleave) (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: