[ https://issues.apache.org/jira/browse/SOLR-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12839909#action_12839909 ]
Hoss Man commented on SOLR-1752: -------------------------------- Long term, we could evolve the Solr XML Update format to allow both adds and deletes (and we probably should) but that seems like a seperate issue. Given the current state of hte XML Syntax allowed, it does seem like there is a bug here in that SolrJ will attempt to send illegal XML when it gets an UpdateRequest that contains both adds and deletes. At a minimum SolrJ should notice when it's configured to use XML and the UpdateRequest contains mixed commands and generate a more specific error message before ever attempting to format the commands as XML and send them to a server. It might conceivable make sense to convert the UpdateRequest into multiple server calls -- but i haven't thought that through very far and i'm not sure what that would entail (the error handling would probably be a bit tricky) > SolrJ fails with exception when passing document ADD and DELETEs in the same > request using XML request writer (but not binary request writer) > --------------------------------------------------------------------------------------------------------------------------------------------- > > Key: SOLR-1752 > URL: https://issues.apache.org/jira/browse/SOLR-1752 > Project: Solr > Issue Type: Bug > Components: clients - java, update > Affects Versions: 1.4 > Reporter: Jayson Minard > Assignee: Shalin Shekhar Mangar > Priority: Blocker > > Add this test to SolrExampleTests.java and it will fail when using the XML > Request Writer (now default), but not if you change the SolrExampleJettyTest > to use the BinaryRequestWriter. > {code} > public void testAddDeleteInSameRequest() throws Exception { > SolrServer server = getSolrServer(); > SolrInputDocument doc3 = new SolrInputDocument(); > doc3.addField( "id", "id3", 1.0f ); > doc3.addField( "name", "doc3", 1.0f ); > doc3.addField( "price", 10 ); > UpdateRequest up = new UpdateRequest(); > up.add( doc3 ); > up.deleteById("id001"); > up.setWaitFlush(false); > up.setWaitSearcher(false); > up.process( server ); > } > {code} > terminates with exception: > {code} > Feb 3, 2010 8:55:34 AM org.apache.solr.common.SolrException log > SEVERE: org.apache.solr.common.SolrException: Illegal to have multiple roots > (start tag in epilog?). > at [row,col {unknown-source}]: [1,125] > at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:72) > at > org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) > at > org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) > at org.mortbay.jetty.Server.handle(Server.java:285) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502) > at > org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:723) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378) > at > org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226) > at > org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) > Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal to have multiple > roots (start tag in epilog?). > at [row,col {unknown-source}]: [1,125] > at > com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:630) > at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:461) > at > com.ctc.wstx.sr.BasicStreamReader.handleExtraRoot(BasicStreamReader.java:2155) > at > com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2070) > at > com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2647) > at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019) > at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:90) > at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69) > ... 18 more > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.