[ https://issues.apache.org/jira/browse/SOLR-15192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17289949#comment-17289949 ]
Thomas Wöckinger commented on SOLR-15192: ----------------------------------------- [~dsmiley] Finally found the reason, really hard to debug because RTG is not always used. 1.) DistributedUpdateProcessor at line 688 reads: oldRootDocWithChildren = RealTimeGetComponent.getInputDocument This document can contain LazyField instances. 2.) At line 710 AtomicUpdateDocumentMerger is used to merge the incoming document with the oldRootDocWithChildren 3.) In AtomicUpdateDocumentMerger.mergeDocHavingSameId the incoming fields are getting merged. If the oldRootDocWithChildren has fields which are not part of the incoming document, they will be left untouched, which leads to the exception in case of an LazyField. >From my point of view there are two possible solutions: a.) restore the all (not merged) lazy fields from the target document b.) remove the all (not merged) lazy fields from the target document I tend to b.) because i think it is not even correct to use the value during atomic update, maybe it is even better to remove all LazyField instances before using the AtomicUpdateDocumentMerger > Atomic update error when RTG component is involved > -------------------------------------------------- > > Key: SOLR-15192 > URL: https://issues.apache.org/jira/browse/SOLR-15192 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: update, UpdateRequestProcessors > Affects Versions: 8.8, 8.8.1 > Reporter: Thomas Wöckinger > Priority: Critical > > Following exception is thrown when using atomic updates: > > solr_1 | 2021-02-24 08:33:04.655 ERROR (qtp776484396-117) [ > x:CollectionUnderTest34259b20-425b-4cdd-853e-eb173a6611f2] > o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: > TransactionLog doesn't know how to serialize class > org.apache.lucene.document.LazyDocument$LazyField; try implementing > ObjectResolver? > solr_1 | at > org.apache.solr.update.TransactionLog$1.resolve(TransactionLog.java:100) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:266) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec$BinEntryWriter.put(JavaBinCodec.java:441) > solr_1 | at > org.apache.solr.common.ConditionalKeyMapWriter$EntryWriterWrapper.put(ConditionalKeyMapWriter.java:44) > solr_1 | at > org.apache.solr.common.MapWriter$EntryWriter.putNoEx(MapWriter.java:101) > solr_1 | at > org.apache.solr.common.MapWriter$EntryWriter.lambda$getBiConsumer$0(MapWriter.java:161) > solr_1 | at > org.apache.solr.common.SolrInputDocument.lambda$writeMap$0(SolrInputDocument.java:59) > solr_1 | at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) > solr_1 | at > org.apache.solr.common.SolrInputDocument.writeMap(SolrInputDocument.java:61) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.writeSolrInputDocument(JavaBinCodec.java:667) > solr_1 | at > org.apache.solr.update.TransactionLog.write(TransactionLog.java:397) > solr_1 | at org.apache.solr.update.UpdateLog.add(UpdateLog.java:585) > solr_1 | at org.apache.solr.update.UpdateLog.add(UpdateLog.java:557) > solr_1 | at > org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:351) > solr_1 | at > org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:294) > solr_1 | at > org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:241) > solr_1 | at > org.apache.solr.update.processor.RunUpdateProcessorFactory$RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:73) > solr_1 | at > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55) > solr_1 | at > org.apache.solr.update.processor.NestedUpdateProcessorFactory$NestedUpdateProcessor.processAdd(NestedUpdateProcessorFactory.java:79) > solr_1 | at > org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55) > solr_1 | at > org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:256) > solr_1 | at > org.apache.solr.update.processor.DistributedUpdateProcessor.doVersionAdd(DistributedUpdateProcessor.java:495) > solr_1 | at > org.apache.solr.update.processor.DistributedUpdateProcessor.lambda$versionAdd$0(DistributedUpdateProcessor.java:336) > solr_1 | at > org.apache.solr.update.VersionBucket.runWithLock(VersionBucket.java:50) > solr_1 | at > org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:336) > solr_1 | at > org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:222) > solr_1 | at > org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:106) > solr_1 | at > org.apache.solr.handler.loader.JavabinLoader$1.update(JavabinLoader.java:110) > solr_1 | at > org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:343) > solr_1 | at > org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readIterator(JavaBinUpdateRequestCodec.java:291) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:338) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:283) > solr_1 | at > org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$StreamingCodec.readNamedList(JavaBinUpdateRequestCodec.java:244) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:303) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:283) > solr_1 | at > org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:196) > solr_1 | at > org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:131) > solr_1 | at > org.apache.solr.handler.loader.JavabinLoader.parseAndLoadDocs(JavabinLoader.java:122) > solr_1 | at > org.apache.solr.handler.loader.JavabinLoader.load(JavabinLoader.java:70) > solr_1 | at > org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97) > solr_1 | at > org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:82) > solr_1 | at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:216) > solr_1 | at org.apache.solr.core.SolrCore.execute(SolrCore.java:2646) > solr_1 | at > org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:794) > solr_1 | at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:567) > solr_1 | at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:427) > solr_1 | at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:357) > solr_1 | at > org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201) > solr_1 | at > org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) > solr_1 | at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > solr_1 | at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) > solr_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) > solr_1 | at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1612) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > solr_1 | at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) > solr_1 | at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) > solr_1 | at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1582) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) > solr_1 | at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) > solr_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > solr_1 | at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191) > solr_1 | at > org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:177) > solr_1 | at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) > solr_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > solr_1 | at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322) > solr_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > solr_1 | at org.eclipse.jetty.server.Server.handle(Server.java:516) > solr_1 | at > org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) > solr_1 | at > org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556) > solr_1 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) > solr_1 | at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) > solr_1 | at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) > solr_1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) > solr_1 | at > org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:540) > solr_1 | at > org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:395) > solr_1 | at > org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) > solr_1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) > solr_1 | at > org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) > solr_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) > solr_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) > solr_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) > solr_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) > solr_1 | at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) > solr_1 | at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) > solr_1 | at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) > solr_1 | at java.base/java.lang.Thread.run(Thread.java:834) -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org