[ https://issues.apache.org/jira/browse/SOLR-13523?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Smiley updated SOLR-13523: -------------------------------- Attachment: SOLR-13523.patch Status: Patch Available (was: Patch Available) Ugh; here's an updated patch. I finally ran the whole test suite and caught two more issues: * TestChildDocTransformer specifically wants to test with a root field but NOT a nest path field. So I added a schema-root.xml for this case using a fairly minimal schema, and tweaked the test where it assumed certain fields from the default schema were multivalued and they are not here (wasn't fundamental to the test). * AtomicUpdateProcessorFactoryTest.testMultipleThreads: This test provokes this assertion to fail: https://github.com/apache/lucene-solr/blob/f26388d034fe5eadca7416aa63b509b8db2c7688/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java#L488. I'm not so sure about that assertion. I commented it out in this patch. [~moshebla] I really want to hear your input on this. I'm also rather concerned about the potential for serious performance degradation on indexing introduced by the caller of this method which will call ulog.openRealtimeSearcher. This is new in 8.1 and only activated when "isUsableForChildDocs" (i.e. merely has a root) and if the incoming doc has a nested doc. Granted this is a separate issue we could discuss on SOLR-12638 which added it. > Atomic Update results in NullPointerException > --------------------------------------------- > > Key: SOLR-13523 > URL: https://issues.apache.org/jira/browse/SOLR-13523 > Project: Solr > Issue Type: Bug > Components: update > Affects Versions: 8.0 > Environment: * Operating system: Win10 v1803 build 17143.766 > * Java version: > java 11.0.1 2018-10-16 LTS > Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS) > Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode) > * solr-spec: 8.1.1 > * solr-impl: 8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab - > 2019-05-22 15:20:01 > * lucene-spec: 8.1.1 > * lucene-impl: 8.1.1 fcbe46c28cef11bc058779afba09521de1b19bef - ab - > 2019-05-22 15:15:24 > Reporter: Kieran Devlin > Assignee: David Smiley > Priority: Major > Attachments: SOLR-13523.patch, SOLR-13523.patch, SOLR-13523.patch, > SOLR-13523_WIP_bug_hunt.patch, XUBrk.png, Xn1RW.png, reproduce.sh > > Time Spent: 50m > Remaining Estimate: 0h > > Partially update a document via an atomic update, when I do so, the web sever > responds with a 500 status with the stack trace: > {code:java} > { "responseHeader":{ "status":500, "QTime":1}, "error":{ > "trace":"java.lang.NullPointerException\r\n\tat > org.apache.solr.update.processor.AtomicUpdateDocumentMerger.getFieldFromHierarchy(AtomicUpdateDocumentMerger.java:301)\r\n\tat > > org.apache.solr.update.processor.AtomicUpdateDocumentMerger.mergeChildDoc(AtomicUpdateDocumentMerger.java:398)\r\n\tat > > org.apache.solr.update.processor.DistributedUpdateProcessor.getUpdatedDocument(DistributedUpdateProcessor.java:697)\r\n\tat > > org.apache.solr.update.processor.DistributedUpdateProcessor.doVersionAdd(DistributedUpdateProcessor.java:372)\r\n\tat > > org.apache.solr.update.processor.DistributedUpdateProcessor.lambda$versionAdd$0(DistributedUpdateProcessor.java:337)\r\n\tat > > org.apache.solr.update.VersionBucket.runWithLock(VersionBucket.java:50)\r\n\tat > > org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:337)\r\n\tat > > org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:223)\r\n\tat > > org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:103)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.AddSchemaFieldsUpdateProcessorFactory$AddSchemaFieldsUpdateProcessor.processAdd(AddSchemaFieldsUpdateProcessorFactory.java:475)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldNameMutatingUpdateProcessorFactory$1.processAdd(FieldNameMutatingUpdateProcessorFactory.java:75)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.FieldMutatingUpdateProcessor.processAdd(FieldMutatingUpdateProcessor.java:118)\r\n\tat > > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)\r\n\tat > > org.apache.solr.update.processor.AbstractDefaultValueUpdateProcessorFactory$DefaultValueUpdateProcessor.processAdd(AbstractDefaultValueUpdateProcessorFactory.java:92)\r\n\tat > > org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.handleAdds(JsonLoader.java:507)\r\n\tat > > org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.processUpdate(JsonLoader.java:145)\r\n\tat > > org.apache.solr.handler.loader.JsonLoader$SingleThreadedJsonLoader.load(JsonLoader.java:121)\r\n\tat > org.apache.solr.handler.loader.JsonLoader.load(JsonLoader.java:84)\r\n\tat > org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)\r\n\tat > > org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)\r\n\tat > > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)\r\n\tat > org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)\r\n\tat > org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)\r\n\tat > org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)\r\n\tat > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)\r\n\tat > > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)\r\n\tat > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)\r\n\tat > > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\r\n\tat > > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\r\n\tat > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\r\n\tat > > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\r\n\tat > > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\r\n\tat > > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)\r\n\tat > > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\r\n\tat > > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)\r\n\tat > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\r\n\tat > > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)\r\n\tat > > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)\r\n\tat > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat > > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)\r\n\tat > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat > org.eclipse.jetty.server.Server.handle(Server.java:502)\r\n\tat > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)\r\n\tat > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\r\n\tat > > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\r\n\tat > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\r\n\tat > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\r\n\tat > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\r\n\tat > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\r\n\tat > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\r\n\tat > > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\r\n\tat > > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\r\n\tat > > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)\r\n\tat > > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)\r\n\tat > java.base/java.lang.Thread.run(Thread.java:834)\r\n", "code":500}}{code} > Steps to reproduce: > # Start a new clean instance of Solr. > # Create a new core. > # Add a new document with the following data (in development mode Solr > should create fields automatically) using Solr Admin's document upload tool. > {code:java} > { "id": "1", "network_s": "original value" } {code} > !XUBrk.png! > # Then proceed to upload a new JSON command to update the previously > uploaded document. > {code:java} > [{"id": "1", "network_s": {"set":"Something else"}}]{code} > !Xn1RW.png! > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org