OpenSearch node skips Lucene updates during ZDU migration

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: High
    • None
    • Affects Version/s: 11.3.10, 11.3.11
    • Component/s: OpenSearch
    • None
    • 11.03
    • 1
    • Severity 3 - Minor

      Issue Summary

      When migrating from Lucene to OpenSearch for Jira DC and using the zero downtime approach, the OpenSearch node skips Lucene index updates made by other nodes which have not changed to use OpenSearch.

      Steps to Reproduce

      1. Deploy a two-node Jira cluster
      2. Configure one node to use OpenSearch
      3. Add the dark feature flag com.atlassian.jira.migrate.lucene.to.opensearch.enabled as described in Migrating to OpenSearch without downtime
      4. Perform a reindex from the OpenSearch Jira node
      5. Update an issue on the Lucene node, e.g., change an issue summary to foo
      6. Wait ~60 seconds for the update to replicate

      Expected Results

      Run a JQL search (summary ~ "foo") on the OpenSearch node and observe that the update appears in the search results.

      Actual Results

      1. No issue is returned for the JQL search.
      2. The below exception (or similar) is thrown in the atlassian-jira.log file:
      2026-08-25 16:25:31,651+0000 NodeReindexServiceThread:thread-0 ERROR      [c.a.j.index.ha.DefaultNodeReindexService] [INDEX-REPLAY] Error re-indexing node changes
      java.lang.RuntimeException: Failed to update index for ([ReplicatedIndexOperation{indexTime=2026-08-25 16:25:16.965561, id=10200, nodeId='jira_node2', affectedIdToVersion={}, operation=FULL_REINDEX_START, affectedIndex=ALL, entityType=NONE, backupFilename=', documentType='null'}, ReplicatedIndexOperation{indexTime=2026-08-25 16:25:18.740533, id=10201, nodeId='jira_node2', affectedIdToVersion={}, operation=FULL_REINDEX_END, affectedIndex=ALL, entityType=NONE, backupFilename='IndexSnapshot_10001_260825-162518.tar.sz, documentType='null'}])
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.applyIndexOperations(DefaultNodeReindexService.java:481)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.lambda$reIndex$1(DefaultNodeReindexService.java:416)
              at com.atlassian.jira.index.QueueingIndexPriority.runWithIndexingPriority(QueueingIndexPriority.java:24)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.reIndex(DefaultNodeReindexService.java:415)
              at com.atlassian.jira.util.thread.JiraThreadLocalUtils.lambda$wrap$1(JiraThreadLocalUtils.java:156)
              at com.atlassian.jira.util.concurrent.ScheduledExecutorServiceUtils$1.run(ScheduledExecutorServiceUtils.java:43)
              at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
              at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
              at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
              at java.base/java.lang.Thread.run(Thread.java:1583)
      Caused by: java.lang.UnsupportedOperationException: withReindexLock is not supported for OpenSearch as there is no reindex lock.
              at com.atlassian.jira.search.opensearch.OpenSearchJiraIndexManager.withReindexLock(OpenSearchJiraIndexManager.java:193)
              at com.atlassian.jira.index.ha.DefaultIndexRecoveryManager.recoverIndexFromBackup(DefaultIndexRecoveryManager.java:228)
              at com.atlassian.jira.index.ha.DefaultIndexCopyService$MessageConsumer.restoreIndex(DefaultIndexCopyService.java:193)
              at com.atlassian.jira.index.ha.DefaultIndexCopyService.restoreIndex(DefaultIndexCopyService.java:76)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.handleFullReindexOperation(DefaultNodeReindexService.java:538)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.updateAffectedIndexes(DefaultNodeReindexService.java:580)
              at com.atlassian.jira.index.ha.DefaultNodeReindexService.applyIndexOperations(DefaultNodeReindexService.java:478)
              ... 11 more 

      Workaround

      There is no known workaround. Updating -Djira.cache.replication.localq.put.ttl.seconds=315360000 on the OpenSearch node removes the exception, but it does not resolve the issue of skipped index operations from Lucene nodes.

              Assignee:
              Will Yasvoin
              Reporter:
              Will Yasvoin
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: