[infinispan-issues] [JBoss JIRA] (ISPN-4762) Provide hooks in NettyTransport to verify if the masterGroup and workGroup have completely shut down

Duncan Doyle (JIRA) issues at jboss.org
Wed Sep 24 12:57:02 EDT 2014


Duncan Doyle created ISPN-4762:
----------------------------------

             Summary: Provide hooks in NettyTransport to verify if the masterGroup and workGroup have completely shut down
                 Key: ISPN-4762
                 URL: https://issues.jboss.org/browse/ISPN-4762
             Project: Infinispan
          Issue Type: Enhancement
          Components: Remote Protocols
    Affects Versions: 7.0.0.Beta2
         Environment: Mac OS X 10.9.4, Oracle Hotspot 1.7.0_67, Infinispan 7.0.0.Beta2 in 'Hybrid-mode', JBoss EAP 6.3.0
            Reporter: Duncan Doyle
            Assignee: Galder Zamarreño
            Priority: Minor


For various reasons, I run ISPN in, what I call, HybridMode. I basically run ISPN in lib-mode in a WAR file and bootstrap a HotRodServer from a @WebListener. This allows me to startup the system on ServletContextListener.contextInitialized and cleanly shutdown the system on ServletContextListener.contextDestroyed. The app runs on JBoss EAP 6.3.0.

The problem I face is that, when I undeploy my application, I shutdown the HotRodServer using the stop() method, the HotRodServerWorker threads are stopped asynchronously (non-blocking). However, there is no hook into the NettyTransport class to actually check whether the WorkerGroup has completely stopped. JBoss EAP starts undeploying the app, removing classloaders, etc. while the HotRodServerWorker threads are still active. This eventually results in ClassNotFoundExceptions on some Netty classes:
{quote}
09:38:10,315 ERROR [stderr] (HotRodServerWorker-3-39) java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$3
09:38:10,316 ERROR [stderr] (HotRodServerWorker-3-39) 	at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:593)
09:38:10,316 ERROR [stderr] (HotRodServerWorker-3-39) 	at io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:404)
09:38:10,324 ERROR [stderr] (HotRodServerWorker-3-39) 	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:155)
09:38:10,324 ERROR [stderr] (HotRodServerWorker-3-39) 	at java.lang.Thread.run(Thread.java:745)
{quote}

I've currently solved this problem by putting a Thread.sleep in my shutdown code to give the threads some time to cleanly stop, but that's obviously not ideal. It would be nice to be able to somehow check whether the NettyTransport 'masterGroup' and 'workerGroup' have stopped, so I can check that in my shutdown sequence.



--
This message was sent by Atlassian JIRA
(v6.3.1#6329)



More information about the infinispan-issues mailing list