[ 
https://issues.apache.org/jira/browse/SOLR-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mike Mattozzi updated SOLR-1752:
--------------------------------

    Attachment: SOLR-1752.patch

I ran into this problem today and was surprised it hadn't been fixed. I've 
attached a patch to UpdateRequest that maintains an ordered list that can be a 
mix of SolrInputDocuments to add, ids to delete, and delete queries. 

There's a few places where my patch iterates over documents instead of doing an 
addAll so there may be some inefficiencies. It seems like these would be 
outweighed by the ability to group up update operations, but I could always 
optimize more. 

> 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
>         Attachments: SOLR-1752.patch
>
>
> 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to