You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/10/09 20:33:00 UTC
[jira] [Updated] (SOLR-12703) Better validation of bad atomic updates
[ https://issues.apache.org/jira/browse/SOLR-12703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated SOLR-12703:
----------------------------------
Labels: pull-request-available (was: )
> Better validation of bad atomic updates
> ---------------------------------------
>
> Key: SOLR-12703
> URL: https://issues.apache.org/jira/browse/SOLR-12703
> Project: Solr
> Issue Type: Bug
> Reporter: Varun Thacker
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> I spent the majority of the day fighting a user issue. Here's the stack trace the user was running into:
> {code:java}
> ERROR - 2018-08-27 21:57:48.045; [c:gettingstarted s:shard1 r:core_node5 x:gettingstarted_shard1_replica_n2] org.apache.solr.handler.RequestHandlerBase; org.apache.solr.common.SolrException: RunUpdateProcessor has received an AddUpdateCommand containing a document that appears to still contain Atomic document update operations, most likely because DistributedUpdateProcessorFactory was explicitly disabled from this updateRequestProcessorChain
> at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:62)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:950)
> at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1168)
> at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:633)
> at org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:103)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$AddSchemaFieldsUpdateProcessor.processAdd(AddSchemaFieldsUpdateProcessorFactory.java:475)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldNameMutatingUpdateProcessorFactory$1.processAdd(FieldNameMutatingUpdateProcessorFactory.java:75)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)
> at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
> at org.apache.solr.update.processor.AbstractDefaultValueUpdateProcessorFactory$DefaultValueUpdateProcessor.processAdd(AbstractDefaultValueUpdateProcessorFactory.java:92)
> at org.apache.solr.handler.loader.JavabinLoader$1.update(JavabinLoader.java:98)
> at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:188)
> at org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readIterator(JavaBinUpdateRequestCodec.java:144){code}
> This is with the default solrconfig which means DistributedUpdateProcessor was present before
> RunUpdateProcessorFactory. From what I could tell DistributedUpdateProcessor#getUpdatedDocument should have resolved the atomic update and RunRunUpdateProcessorFactory should never receive an atomic update.
>
> Turned out it was an indexing client bug which was causing a certain fraction of the updates to fail with this error. Here's a sample SolrJ code which would trigger this stack trace always
> {code:java}
> public void test() throws IOException, SolrServerException {
> CloudSolrClient client = new CloudSolrClient.Builder(Collections.singletonList("localhost:9983"), Optional.empty()).build();
> client.connect();
> client.setDefaultCollection("gettingstarted");
> //Works
> SolrInputDocument document = new SolrInputDocument();
> document.addField("id", "1");
> document.addField("string_s" , ImmutableMap.of("set", "bbb"));
> client.add(document);
> //Does not work and throws a very confusing error
> document = new SolrInputDocument();
> document.addField("id", "1");
> document.addField("string_s" , ImmutableMap.of("set", ImmutableMap.of("set", "bbb")));
> client.add(document);
> }{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org