[ 
https://issues.apache.org/jira/browse/SOLR-11692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16273860#comment-16273860
 ] 

David Smiley commented on SOLR-11692:
-------------------------------------

[~millerjeff0] can you attach a patch to the issue instead?  inlining diffs is 
problematic due to escaping.  Also, unlike some diffs which need no context, 
for this one it's necessary to apply it to notice that your intent was to move 
the closing until after code that calls {{chain.doFilter}}.  I looked at 
SolrDispatchFilter and do note {{chain.doFilter}} is actually in two places 
(not one); the second is beyond where you moved it to.  So I think your patch 
here only addresses the issue for some cases but not others.  Any way, the fix 
should be easy.

> SolrDispatchFilter.closeShield passes the shielded response object back to 
> jetty making the stream unclose able
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-11692
>                 URL: https://issues.apache.org/jira/browse/SOLR-11692
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Response Writers
>    Affects Versions: 7.1
>         Environment: Linux/Mac tested
>            Reporter: Jeff Miller
>            Priority: Minor
>              Labels: dispatchlayer, jetty, newbie, streams
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> In test mode we trigger closeShield code in SolrDispatchFilter, however there 
> are code paths where we passthrough the objects to the DefaultHandler which 
> can no longer close the response.
> Example stack trace:
> java.lang.AssertionError: Attempted close of response output stream.
>     at 
> org.apache.solr.servlet.SolrDispatchFilter$2$1.close(SolrDispatchFilter.java:528)
>     at org.eclipse.jetty.server.Dispatcher.commitResponse(Dispatcher.java:315)
>     at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:279)
>     at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103)
>     at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:566)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
>     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
>     at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1448)
>     at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:385)
>     at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:326)
>     at 
> searchserver.filter.SfdcDispatchFilter.doFilter(SfdcDispatchFilter.java:204)
>     at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
>     at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
>     at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>     at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
>     at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>     at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>     at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>     at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>     at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>     at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>     at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>     at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
>     at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>     at org.eclipse.jetty.server.Server.handle(Server.java:370)
>     at 
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>     at 
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
>     at 
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
>     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
>     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>     at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>     at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
>     at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
>     at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>     at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>     at java.lang.Thread.run(Thread.java:745)
> Related JIRA: SOLR-8933



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to