ICEpush
  1. ICEpush
  2. PUSH-148

Servlet 3.0 ARP's timeout interferes with ICEpush' heartbeat mechanism

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-Alpha3
    • Fix Version/s: 2.0-Beta
    • Component/s: Push Library
    • Labels:
      None
    • Environment:
      Apache Tomcat 7, ICEpush

      Description

      Servlet 3.0's AsyncContext uses a timeout mechanism for pending requests. The default timeout is dependent on the container. However, this timeout can potentially interfere with ICEpush' heartbeat mechanism. When a pending request gets timed out by Servlet 3.0 before the next ping comes in the following Exception can be experienced:

      Caused by: java.lang.IllegalStateException: The request associated with the AsyncContext has already completed processing.
      at org.apache.catalina.core.AsyncContextImpl.check(AsyncContextImpl.java:436)
      at org.apache.catalina.core.AsyncContextImpl.complete(AsyncContextImpl.java:87)
      at org.icepush.servlet.AsyncAdaptingServlet$AsyncRequestResponse.respondWith(AsyncAdaptingServlet.java:66)
      at org.icepush.BlockingConnectionServer.respondIfPendingRequest(BlockingConnectionServer.java:131)
      ... 38 more

        Issue Links

          Activity

          Repository Revision Date User Message
          ICEsoft Public SVN Repository #26247 Fri Nov 04 07:50:07 MDT 2011 jack.van.ooststroom Fixed JIRA PUSH-148 : Servlet 3.0 ARP's timeout interferes with ICEpush' heartbeat mechanism
          Files Changed
          Commit graph MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/servlet/AsyncAdaptingServlet.java
          Commit graph MODIFY /icepush/trunk/icepush/core/src/main/java/org/icepush/servlet/EnvironmentAdaptingServlet.java
          Jack Van Ooststroom created issue -
          Jack Van Ooststroom made changes -
          Field Original Value New Value
          Assignee Jack van Ooststroom [ jack.van.ooststroom ]
          Jack Van Ooststroom made changes -
          Link This issue depends on PUSH-147 [ PUSH-147 ]
          Jack Van Ooststroom made changes -
          Link This issue blocks ICE-7327 [ ICE-7327 ]
          Hide
          Jack Van Ooststroom added a comment -

          The AsyncAdaptingServlet now takes a Configuration in its constructor as well. The configuration is used to get the heartbeatTimeout from the web.xml using 15000 as the default value as used elsewhere in the ICEpush code. The heartbeatTimeout value is used to set the timeout on the AsyncContext on a per-request basis, by multiplying the heartbeatTimeout by 2.

          Marking this one as FIXED.

          Show
          Jack Van Ooststroom added a comment - The AsyncAdaptingServlet now takes a Configuration in its constructor as well. The configuration is used to get the heartbeatTimeout from the web.xml using 15000 as the default value as used elsewhere in the ICEpush code. The heartbeatTimeout value is used to set the timeout on the AsyncContext on a per-request basis, by multiplying the heartbeatTimeout by 2. Marking this one as FIXED.
          Jack Van Ooststroom made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Jack Van Ooststroom
              Reporter:
              Jack Van Ooststroom
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: