InvalidDocumentFieldException while reindexing or performing issue operations in Jira DC

XMLWordPrintable

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Medium
    • None
    • Affects Version/s: 10.4.0, 11.0.0, 11.3.0, 11.3.4
    • Component/s: Search - Search API
    • None
    • 10.04
    • Severity 3 - Minor

      Issue Summary

      After upgrading to Jira Data Center 10.4 or later (including 11.3 LTS), admins may encounter this error: 

      com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_XXXXX]
      

      This is caused by the Search API abstraction layer introduced in Jira 10.4 to accommodate OpenSearch. Atlassian Support believes this is caused by custom fields not being properly registered into the field schema cache.

      Steps to Reproduce

      Currently, the only known steps to reproduce involve using Adaptavist’s ScriptRunner for Jira (a third-party Marketplace app). Thanks to the Adaptavist team for helping document this defect.

      1. Install Jira DC and a compatible ScriptRunner for Jira release.
      2. Create a Scripted Field (com.onresolve.jira.groovy.groovyrunner:scripted-field)
      3. Perform a full reindex (Reindex A).
      4. Disable and re-enable ScriptRunner from ⚙️ (gear icon) > Manage apps > Manage apps.
      5. Perform another full reindex (Reindex B).
      6. Attempt to transition an issue.

      Expected Results

      Both Reindex A and Reindex B succeed. Issue operations are unaffected.

      Actual Results

      Symptom 1

      Only Reindex A succeeds. Reindex B fails with this error on most issues:

      2026-04-22 21:00:00,000+0000 IssueIndexer:thread-1 WARN      [c.a.jira.index.AccumulatingResultBuilder] com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10000]
      java.lang.RuntimeException: com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10000]
      	at com.atlassian.jira.index.DefaultIndex$Failure.<init>(DefaultIndex.java:100)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$EntityOperation.lambda$perform$6(DefaultIssueIndexer.java:979)
      	at java.base/java.util.HashMap.forEach(HashMap.java:1429)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$EntityOperation.perform(DefaultIssueIndexer.java:979)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer.lambda$processInnerBatch$6(DefaultIssueIndexer.java:385)
      	at com.atlassian.jira.index.SimpleIndexingStrategy.apply(SimpleIndexingStrategy.java:7)
      	at com.atlassian.jira.index.SimpleIndexingStrategy.apply(SimpleIndexingStrategy.java:5)
      	at com.atlassian.jira.index.MultiThreadedIndexingStrategy$1.call(MultiThreadedIndexingStrategy.java:47)
      	[...]
      Caused by: com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10600]
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.lambda$validate$0(SchemaValidatedFieldValueCollector.java:38)
      	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.validate(SchemaValidatedFieldValueCollector.java:38)
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.add(SchemaValidatedFieldValueCollector.java:31)
      	at com.atlassian.jira.search.field.FieldValueCollector.add(FieldValueCollector.java:19)
      	at com.atlassian.jira.search.issue.index.indexers.impl.SortableTextCustomFieldIndexer.indexFieldsWithVisibility(SortableTextCustomFieldIndexer.java:83)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexerWithStats.indexFieldsWithVisibility(FieldIndexerWithStats.java:69)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor.indexIssue(FieldIndexersIssueIndexExtractor.java:152)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor.lambda$indexEntities$1(FieldIndexersIssueIndexExtractor.java:117)
      	at java.base/java.util.HashMap.forEach(HashMap.java:1429)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor.indexEntities(FieldIndexersIssueIndexExtractor.java:111)
      	[...]
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor$$SpringCGLIB$$0.indexEntities(<generated>)
      	at com.atlassian.jira.search.issue.index.DefaultEntityFieldValuesFactory.createFieldValues(DefaultEntityFieldValuesFactory.java:59)
      	at com.atlassian.jira.issue.index.DefaultIssueDocumentFactory.createDocuments(DefaultIssueDocumentFactory.java:44)
      	[...]
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$DefaultDocumentCreationStrategy.get(DefaultIssueIndexer.java:1525)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$IssuesOperation.createDocuments(DefaultIssueIndexer.java:1118)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$EntityOperation.perform(DefaultIssueIndexer.java:968)
      	[...]
      

      Symptom 2

      Basic issue operations fail. For example, when attempting to transition an issue with an unmodified, built-in workflow:

      2026-04-22 21:00:00,000+0000 http-nio-8080-exec-1 WARN charlie 1x1x1 abcdefg 0.0.0.0 /secure/WorkflowUIDispatcher.jspa [c.a.jira.index.AccumulatingResultBuilder] com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10000]
      java.lang.RuntimeException: com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10000]
      	at com.atlassian.jira.index.DefaultIndex$Failure.<init>(DefaultIndex.java:100)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$EntityOperation.perform(DefaultIssueIndexer.java:959)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer.lambda$perform$8(DefaultIssueIndexer.java:637)
      	at com.atlassian.jira.index.SimpleIndexingStrategy.apply(SimpleIndexingStrategy.java:7)
      	at com.atlassian.jira.index.SimpleIndexingStrategy.apply(SimpleIndexingStrategy.java:5)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer.lambda$perform$9(DefaultIssueIndexer.java:635)
      	at com.atlassian.jira.util.collect.CollectionUtil.foreach(CollectionUtil.java:44)
      	at com.atlassian.jira.util.collect.CollectionUtil.foreach(CollectionUtil.java:57)
      	at com.atlassian.jira.issue.util.IssueObjectIssuesIterable.foreach(IssueObjectIssuesIterable.java:23)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer.perform(DefaultIssueIndexer.java:603)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer.reindexIssues(DefaultIssueIndexer.java:427)
      	at com.atlassian.jira.issue.index.IndexManagerBase.lambda$reIndexIssues$5(IndexManagerBase.java:683)
      	at com.atlassian.jira.issue.index.IndexManagerBase.executeWithIndexLock(IndexManagerBase.java:907)
      	at com.atlassian.jira.issue.index.IndexManagerBase.reIndexIssues(IndexManagerBase.java:683)
      	at com.atlassian.jira.issue.index.IndexManagerBase.reIndexIssues(IndexManagerBase.java:661)
      	at com.atlassian.jira.issue.index.IndexManagerBase.reIndexIssues(IndexManagerBase.java:645)
      	at com.atlassian.jira.issue.index.IndexManagerBase.release(IndexManagerBase.java:634)
      	at com.atlassian.jira.issue.index.IssueIndexManager$$FastClassByCGLIB$$d589b090.invoke(<generated>)
      	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:231)
      	at com.atlassian.jira.config.component.AbstractDelegatedMethodInterceptor.intercept(AbstractDelegatedMethodInterceptor.java:48)
      	at com.atlassian.jira.issue.index.JiraIndexManager$$EnhancerByCGLIB$$2a294776.release(<generated>)
      	at com.atlassian.jira.workflow.OSWorkflowManager.enableIndexingForThisThread(OSWorkflowManager.java:945)
      	at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:822)
      	at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:541)
      	at com.atlassian.jira.web.action.workflow.SimpleWorkflowAction.doExecute(SimpleWorkflowAction.java:33)
      	[...]
      Caused by: com.atlassian.jira.search.exception.InvalidDocumentFieldException: Document contains invalid fields [customfield_10000]
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.lambda$validate$0(SchemaValidatedFieldValueCollector.java:38)
      	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.validate(SchemaValidatedFieldValueCollector.java:38)
      	at com.atlassian.jira.search.field.SchemaValidatedFieldValueCollector.add(SchemaValidatedFieldValueCollector.java:31)
      	at com.atlassian.jira.search.field.FieldValueCollector.add(FieldValueCollector.java:19)
      	at com.atlassian.jira.search.issue.index.indexers.impl.SortableTextCustomFieldIndexer.indexFieldsWithVisibility(SortableTextCustomFieldIndexer.java:83)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexerWithStats.indexFieldsWithVisibility(FieldIndexerWithStats.java:69)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor.indexIssue(FieldIndexersIssueIndexExtractor.java:152)
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor.lambda$indexEntities$1(FieldIndexersIssueIndexExtractor.java:117)
      	[...]
      	at com.atlassian.jira.search.issue.index.indexers.FieldIndexersIssueIndexExtractor$$SpringCGLIB$$0.indexEntities(<generated>)
      	at com.atlassian.jira.search.issue.index.DefaultEntityFieldValuesFactory.createFieldValues(DefaultEntityFieldValuesFactory.java:59)
      	at com.atlassian.jira.issue.index.DefaultIssueDocumentFactory.createDocuments(DefaultIssueDocumentFactory.java:44)
      	at com.atlassian.jira.issue.index.DefaultIssueDocumentFactory.createDocument(DefaultIssueDocumentFactory.java:35)
      	[...]
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$DefaultDocumentCreationStrategy.get(DefaultIssueIndexer.java:1497)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$IssuesOperation.createDocument(DefaultIssueIndexer.java:1113)
      	at com.atlassian.jira.issue.index.DefaultIssueIndexer$EntityOperation.perform(DefaultIssueIndexer.java:946)
      	[...]
      

      Workaround

      Forcefully flush the field schema cache. This workaround will temporarily resolve the problem for all nodes, but it will not persist through restarts.

      Approach A

      1. Navigate to ⚙️ (gear icon) > Issues > Custom fields > any custom field > > Edit details.
      2. Click update without making any changes.
      3. Re-attempt your operation.

      Approach B

      Flush the field schema cache via the ScriptRunner console:

      import com.atlassian.jira.component.ComponentAccessor
      import com.atlassian.jira.search.index.IssuesIndexSchemaManager
      
      def issuesIndexSchemaManager = ComponentAccessor.getComponent(IssuesIndexSchemaManager)
      
      /*
       * Force a reset of the IssuesIndexSchemaManager fieldsCache
       */
      issuesIndexSchemaManager.fieldsCache.reset()
      

              Assignee:
              Unassigned
              Reporter:
              Benjamin S
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: