glassfish
  1. glassfish
  2. GLASSFISH-20463

DAS fails to stop with stop-domain --force=false due to a non-daemon thread

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 4.0_b87_RC3
    • Fix Version/s: 4.1
    • Component/s: OSGi-JavaEE
    • Labels:
      None

      Description

      If you do:

      asadmin start-domain
      asadmin stop-domain --force=false

      You get a timeout:

      $ asadmin stop-domain --force=false
      Waiting for the domain to stop ........................................................
      Timed out (60 seconds) waiting for the domain to stop.
      Command stop-domain failed.

      This is due to a non-daemon thread in a thread pool. From the jstack output:

      "pool-8-thread-1" prio=5 tid=0x00007fa321b71000 nid=0xa103 waiting on condition [0x00000001368d5000]
      java.lang.Thread.State: WAITING (parking)
      at sun.misc.Unsafe.park(Native Method)

      • parking to wait for <0x00000001292d9910> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)

        Activity

        Hide
        Tom Mueller added a comment -

        This thread appears to be coming from the FighterFish ExtenderManager.GlassFishServerTracker class. This class calls Executors.newSingleThreadExecutor but never calls any shutdown method on the executor. The thread that is created by this executor is not a daemon thread.

        Please evaluate whether this is a stopper for 4.0.

        Show
        Tom Mueller added a comment - This thread appears to be coming from the FighterFish ExtenderManager.GlassFishServerTracker class. This class calls Executors.newSingleThreadExecutor but never calls any shutdown method on the executor. The thread that is created by this executor is not a daemon thread. Please evaluate whether this is a stopper for 4.0.
        Hide
        Sanjeeb Sahoo added a comment -

        At this stage of 4.0 release, I am inclined to not fix this issue. We will fix it in 4.0.1.

        Show
        Sanjeeb Sahoo added a comment - At this stage of 4.0 release, I am inclined to not fix this issue. We will fix it in 4.0.1.
        Hide
        TangYong added a comment -

        Sahoo

        I also agree with you not fixing the issue in 4.0 and put in 4.0.1. Just as fixing itself, I think that following seems to be reasonable,

        1. raising up executorService into GlassFishServerTracker class instance member
        2. shutdown logic should be put into removedService method, and once executorService is not null, we execute
        executorService.shutdown() and assign executorService is null.

        Tang

        Show
        TangYong added a comment - Sahoo I also agree with you not fixing the issue in 4.0 and put in 4.0.1. Just as fixing itself, I think that following seems to be reasonable, 1. raising up executorService into GlassFishServerTracker class instance member 2. shutdown logic should be put into removedService method, and once executorService is not null, we execute executorService.shutdown() and assign executorService is null. Tang

          People

          • Assignee:
            Sanjeeb Sahoo
            Reporter:
            Tom Mueller
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: