Confluence DC OpenSearch reindex can fail with 409 version_conflict_engine_exception

XMLWordPrintable

    • Type: Bug
    • Resolution: Handled by Support
    • Priority: Low
    • None
    • Affects Version/s: 10.2.14
    • Component/s: Search - OpenSearch
    • None
    • 1
    • Severity 3 - Minor

      Issue Summary

      When Confluence is configured to use OpenSearch as search engine instead of using the local Lucene, the reindex can fail at the Delete Phase when hitting 409 Conflict from OpenSearch due to version_conflict_engine_exception

      Steps to Reproduce

      Environment: this is tested in Confluence 10.2.14

      1. Configure Confluence to use OpenSearch as search engine
      2. Go to General Configuration > Content Indexing
      3. Click the "Rebuild" button next to Site reindex
        • Under the "Include" options select CONTENT only
      4. Click on Rebuild to trigger a Site Index Rebuild

      This is because when the Site Index Rebuild is triggered without ALL options selected, the rebuild will happen on the Blue Environment instead. Hence the selected scope (Content in the example above) will first need to be deleted before the new ones are indexed.

      Expected Results

      Confluence should be sending /confluence-content/_delete_by_query request to OpenSearch with conflicts=proceed parameter since this is a Rebuild, where no old index of the targeted scope needs to remain.

      Actual Results

      Confluence sends /confluence-content/_delete_by_query without the conflicts parameter, where under certain conditions this query may encounter 409 Conflict from OpenSearch due to version_conflict_engine_exception.
      Here's what the logs:

      2026-09-09 15:01:26,961 INFO [Caesium-1-2] [internal.index.lucene.LuceneFullReindexManager] fullReindexLock Locking indexes for full reindex
      2026-09-09 15:03:16,125 ERROR [lucene-interactive-reindexing-thread] [confluence.internal.index.AbstractReindexer] reIndex Reindex failed
      com.atlassian.confluence.search.v2.SearchIndexAccessException: Unexpected Exception while executing a batched index action against index: [confluence-content]
      ...
      confluence.plugins.opensearch.OpenSearchSearchIndexAccessor.execute(OpenSearchSearchIndexAccessor.java:84)
      	... 73 more
      Caused by: org.opensearch.client.transport.httpclient5.ResponseException: method [POST], host [https://<OpenSearch_URL>], URI [/confluence-content/_delete_by_query], status line [HTTP/1.1 409 Conflict]
      ...
      {
          "took": 169,
          "timed_out": false,
          "total": 10000,
          "deleted": 0,
          "batches": 1,
          "version_conflicts": 1000,
          "noops": 0,
          "retries": {
              "bulk": 0,
              "search": 0
          },
          "throttled_millis": 0,
          "requests_per_second": -1,
          "throttled_until_millis": 0,
          "failures": [
              {
                  "index": "confluence-content_1790144757318",
                  "id": "com.atlassian.confluence.pages.Page-123456",
                  "cause": {
                      "type": "version_conflict_engine_exception",
                      "reason": "[com.atlassian.confluence.pages.Page-123456]: version conflict, required seqNo [56789], primary term [1]. but no document was found",
                      "index": "confluence-content_1790144757318",
                      "shard": "0",
                      "index_uuid": "_abC5D56EFgHIJKLMN4oPQ"
                  },
                  "status": 409
              },
      ...
      

      The 409 Conflict resulted in the Index Rebuild to fail rightaway.

      Workaround

      Trigger Site Index Rebuild with ALL options selected:

      • Content
      • Attachments
      • Users

              Assignee:
              Niraj Bhawnani
              Reporter:
              Damien Tan
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: