Details

    • Type: Bug Bug
    • Status: Resolved Resolved
    • Priority: Major 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
    • Similar Issues:
      Show 10 results 

      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.

        Activity

        Hide
        Willem Jiang
        added a comment -

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

        Show
        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
            Reporter:
            Willem Jiang
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: