You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-dev@lucene.apache.org by "Jayson Minard (JIRA)" <ji...@apache.org> on 2010/02/03 18:00:28 UTC

[jira] Created: (SOLR-1752) SolrJ fails with exception when passing document ADD and DELETEs in the same request using XML request writer (but not binary request writer)

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
            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.


[jira] Commented: (SOLR-1752) SolrJ fails with exception when passing document ADD and DELETEs in the same request using XML request writer (but not binary request writer)

Posted by "Hoss Man (JIRA)" <ji...@apache.org>.
    [ 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.


[jira] Assigned: (SOLR-1752) SolrJ fails with exception when passing document ADD and DELETEs in the same request using XML request writer (but not binary request writer)

Posted by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shalin Shekhar Mangar reassigned SOLR-1752:
-------------------------------------------

    Assignee: Shalin Shekhar Mangar

> 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.


[jira] Commented: (SOLR-1752) SolrJ fails with exception when passing document ADD and DELETEs in the same request using XML request writer (but not binary request writer)

Posted by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SOLR-1752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12838486#action_12838486 ] 

Shalin Shekhar Mangar commented on SOLR-1752:
---------------------------------------------

Jayson, Solr's update XML does not define a container tag so we are constrained to only one of add/delete/commit/optimize at a time. Binary format of course does not have this problem. So unless we decide to add a root tag to the update XML, this exception will happen.

So I guess we have the following options:
# Disallow more than one type of operation for any request writer
# Document this behavior in the UpdateRequest javadocs.

I'd prefer #2 even though it is inconsistent.

> 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.