-
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.
- Install Jira DC and a compatible ScriptRunner for Jira release.
- Create a Scripted Field (com.onresolve.jira.groovy.groovyrunner:scripted-field)
- Perform a full reindex (Reindex A).
- Disable and re-enable ScriptRunner from ⚙️ (gear icon) > Manage apps > Manage apps.
- Perform another full reindex (Reindex B).
- 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
- Navigate to ⚙️ (gear icon) > Issues > Custom fields > any custom field > … > Edit details.
- Click update without making any changes.
- 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()