Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 2.2.10-fuse-00-00, 2.2.11-fuse-00-00, 2.3.1-fuse-01-00 , 2.3.2-fuse-00-00, 2.3.3-fuse-00-00
    • Component/s: None
    • Labels:
      None

      Description

      JMSContinuation contains this method:

      protected void createTimerTask(long timeout) {
              timer = new Timer();
              timer.schedule(new TimerTask() {
                  public void run() {
                      synchronized (JMSContinuation.this) { 
                          if (isPending) {
                              doResume();
                          }
                      }
                  }
              }, timeout);
          }

      The 'if' statement should be changed to:

      if (isPending) {
                  cancelTimerTask();
                  doResume();
      }

      The current impl causes cancel() not to be called on the Timer instance if timeout is triggered. This causes threads created by Timer instances to be leaked.

      Please note: as stated above - the leak is only observable when timeouts are triggered on these continuations. If no timeouts are triggered and the orginary resume() method is called, this class does nto leak threads.

        Gliffy Diagrams

          Activity

          Hide
          willem.jiang Willem Jiang added a comment -

          The apache patch are synced to 2.3.x-fuse and 2.2.x-fuse branch.

          Show
          willem.jiang Willem Jiang added a comment - The apache patch are synced to 2.3.x-fuse and 2.2.x-fuse branch.

            People

            • Assignee:
              willem.jiang Willem Jiang
              Reporter:
              willem.jiang Willem Jiang
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: