[ https://issues.apache.org/jira/browse/SSHD-225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guillaume Nodet resolved SSHD-225. ---------------------------------- Resolution: Fixed > InvertedShellWrapper does not shutdown its executor, preventing graceful JVM > exit > --------------------------------------------------------------------------------- > > Key: SSHD-225 > URL: https://issues.apache.org/jira/browse/SSHD-225 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 0.8.0 > Environment: Apple Java v. 1.6.0 > Reporter: Chris Janicki > Assignee: Guillaume Nodet > Fix For: 0.9.0 > > > When embedded in my app, the following SSHD thread remains running and > prevents my app from exiting gracefully (by allowing the JVM to automatically > shutdown when only deamon threads remain). I call sshd.stop(true), but this > thread still remains. Note however, than it seems to die itself after > several minutes (10+). Then my app successfully exits. > "pool-6-thread-1" prio=5 tid=102821800 nid=0x10e941000 waiting on condition > [10e940000] > java.lang.Thread.State: WAITING (parking) > at sun.misc.Unsafe.park(Native Method) > - parking to wait for <7eedb8190> (a > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) > at > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987) > at > java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399) > at > java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917) > at java.lang.Thread.run(Thread.java:680) > I tried the following to replace the executor's ThreadFactory with my own > (this) that calls setDaemon(true) on the generated thread, but that didn't > work for some reason… The thread in the dump was still not marked daemon, so > maybe I'm looking at the wrong area. > ScheduledExecutorService executor = > Executors.newSingleThreadScheduledExecutor(this); > sshd.setScheduledExecutorService(executor, true); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira