Lukas Kahwe Smith created JCR-3767:
--------------------------------------
Summary: incorrect error handling in combination with Jetty
Key: JCR-3767
URL: https://issues.apache.org/jira/browse/JCR-3767
Project: Jackrabbit Content Repository
Issue Type: Bug
Environment: Jackrabbit 2.6.5 Standalone
Reporter: Lukas Kahwe Smith
quoting Bertrand from the list
(http://mail-archives.apache.org/mod_mbox/jackrabbit-users/201404.mbox/%[email protected]%3e):
{quote}
IIUC either your code or Jackrabbit's is calling response.getWriter(),
and later sendError -> WebdavResponseImpl.sendXmlResponse calls
response.getOutputStream() and causes the issue, as per the servlet
spec [1].
I have no idea if it's correct for WebdavResponseImpl to be involved
and whether it's correct for it to use sendXmlResponse.
I guess the best would be for such error handling code to be prepared
to use either Writer or OutputStream, depending on what happened
before. Unless something else (like a response object wrapper)
guarantees that you cannot mix both.
{quote}
Here is the stack trace that let Bertrand to this analysis, he also referenced
this Jetty bug ticket http://jira.codehaus.org/browse/JETTY-1111
{quote}
2014-04-03 12:28:06.964 ERROR [2115513477@qtp-221739023-131] Slf4jLog.java:87
/server/joiz_ch/jcr:root/.0.json
java.lang.IllegalStateException: WRITER
at org.mortbay.jetty.Response.getOutputStream(Response.java:594)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendXmlResponse(WebdavResponseImpl.java:151)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendError(WebdavResponseImpl.java:95)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:299)
~[jackrabbit.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
[jackrabbit.jar:na]
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at org.mortbay.jetty.Server.handle(Server.java:326) [jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
[jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[jackrabbit.jar:na]
at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
[jackrabbit.jar:na]
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
[jackrabbit.jar:na]
2014-04-03 12:28:10.649 ERROR [124001894@qtp-221739023-146] Slf4jLog.java:87
/server/joiz_ch/jcr:root/.0.json
java.lang.IllegalStateException: WRITER
at org.mortbay.jetty.Response.getOutputStream(Response.java:594)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendXmlResponse(WebdavResponseImpl.java:151)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendError(WebdavResponseImpl.java:95)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:299)
~[jackrabbit.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
[jackrabbit.jar:na]
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at org.mortbay.jetty.Server.handle(Server.java:326) [jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
[jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[jackrabbit.jar:na]
at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
[jackrabbit.jar:na]
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
[jackrabbit.jar:na]
2014-04-03 12:56:10.644 ERROR [952066274@qtp-221739023-157] Slf4jLog.java:87
/server/joiz_ch/jcr:root/.0.json
java.lang.IllegalStateException: WRITER
at org.mortbay.jetty.Response.getOutputStream(Response.java:594)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendXmlResponse(WebdavResponseImpl.java:151)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendError(WebdavResponseImpl.java:95)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:299)
~[jackrabbit.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
[jackrabbit.jar:na]
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at org.mortbay.jetty.Server.handle(Server.java:326) [jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
[jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[jackrabbit.jar:na]
at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
[jackrabbit.jar:na]
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
[jackrabbit.jar:na]
2014-04-03 12:56:12.011 ERROR [1440433128@qtp-221739023-163] Slf4jLog.java:87
/server/joiz_ch/jcr:root/.0.json
java.lang.IllegalStateException: WRITER
at org.mortbay.jetty.Response.getOutputStream(Response.java:594)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendXmlResponse(WebdavResponseImpl.java:151)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.WebdavResponseImpl.sendError(WebdavResponseImpl.java:95)
~[jackrabbit.jar:na]
at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:299)
~[jackrabbit.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
~[jackrabbit.jar:na]
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
[jackrabbit.jar:na]
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
[jackrabbit.jar:na]
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
[jackrabbit.jar:na]
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
[jackrabbit.jar:na]
at org.mortbay.jetty.Server.handle(Server.java:326) [jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
[jackrabbit.jar:na]
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
[jackrabbit.jar:na]
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
[jackrabbit.jar:na]
at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
[jackrabbit.jar:na]
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
[jackrabbit.jar:na]
{quote}
--
This message was sent by Atlassian JIRA
(v6.2#6252)