Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004697 [Resin] minor always 08-03-11 10:06 08-04-11 11:54
Reporter ferg View Status public  
Assigned To ferg
Priority normal Resolution fixed  
Status closed   Product Version
Summary 0004697: async onComplete is calling GET
Description (rep by Adrian Sutton)

We've been trying to track down an exception we see quite regularly in the resin logs:
java.lang.IllegalStateException: Comet cannot be requested after complete().
    at com.caucho.network.listen.TcpSocketLink.toComet(TcpSocketLink.java:1393)
    at com.caucho.server.http.AsyncContextImpl.restart(AsyncContextImpl.java:85)
    at com.caucho.server.http.HttpServletRequestImpl.startAsync(HttpServletRequestImpl.java:1774)
    at com.caucho.server.http.CauchoRequestWrapper.startAsync(CauchoRequestWrapper.java:326)
    at com.foo.hcf.push.PushServlet.parkAsyncContext(PushServlet.java:146)
    at com.foo.hcf.push.PushServlet.handleRequest(PushServlet.java:106)
    at com.foo.hcf.push.PushServlet.doPost(PushServlet.java:59)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:158)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:96)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
    at com.lmax.hcf.web.InvocationContextFilter.doFilter(InvocationContextFilter.java:70)
    at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:89)
    at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:126)
    at com.caucho.server.webapp.ResumeFilterChain.doFilter(ResumeFilterChain.java:142)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:287)
    at com.caucho.server.webapp.RequestDispatcherImpl.dispatchResume(RequestDispatcherImpl.java:510)
    at com.caucho.server.webapp.RequestDispatcherImpl.dispatchResume(RequestDispatcherImpl.java:124)
    at com.caucho.server.http.AbstractHttpRequest.handleResume(AbstractHttpRequest.java:1524)
    at com.caucho.network.listen.TcpSocketLink.handleResumeTask(TcpSocketLink.java:974)
    at com.caucho.network.listen.CometResumeTask.doTask(CometResumeTask.java:60)
    at com.caucho.network.listen.ConnectionTask.runThread(ConnectionTask.java:97)
    at com.caucho.network.listen.ConnectionTask.run(ConnectionTask.java:80)
    at com.caucho.network.listen.CometResumeTask.run(CometResumeTask.java:51)
    at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164)
    at com.caucho.env.thread.ResinThread.run(ResinThread.java:130)


I believe this is occurring because when we call asyncContext.complete(), the request is passed back through doGet/doPost again, at the end of which we try to call request.startAsync again. As I understand it, asyncContext.complete() just cause the response to be committed "as-is" and not trigger a final processing by the servlet class.

Let me know if you need any further information etc.

Additional Information
Attached Files

- Relationships

- Notes
(0005426)
ferg
08-04-11 11:54

server/1lb5
 

- Issue History
Date Modified Username Field Change
08-03-11 10:06 ferg New Issue
08-04-11 11:54 ferg Note Added: 0005426
08-04-11 11:54 ferg Assigned To  => ferg
08-04-11 11:54 ferg Status new => closed
08-04-11 11:54 ferg Resolution open => fixed
08-04-11 11:54 ferg Fixed in Version  => 4.0.21


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
28 total queries executed.
25 unique queries executed.
Powered by Mantis Bugtracker