Hi,
I'm using mina-core 2.0.1 and (mina) sshd 0.5.0.
I have a web application that creates SSH connection (client side) into Linux
hosts, running standard Linux SSH server.
Lately I started getting the following exception in my application:
2011-05-05 11:34:57,101 WARN [org.apache.mina.util.DefaultExceptionMonitor]
Unexpected exception.
java.util.concurrent.RejectedExecutionException
at
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
at
java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
at
org.apache.mina.core.service.AbstractIoService.executeWorker(AbstractIoService.java:445)
at
org.apache.mina.core.service.AbstractIoService.executeWorker(AbstractIoService.java:437)
at
org.apache.mina.core.polling.AbstractPollingIoConnector.startupWorker(AbstractPollingIoConnector.java:358)
at
org.apache.mina.core.polling.AbstractPollingIoConnector.dispose0(AbstractPollingIoConnector.java:302)
at
org.apache.mina.core.service.AbstractIoService.dispose(AbstractIoService.java:293)
at
org.apache.mina.core.service.AbstractIoService.dispose(AbstractIoService.java:277)
at org.apache.sshd.SshClient.stop(SshClient.java:149)
at
com.test.utils.hostinstall.MinaInstallWrapper.wrapperShutdown(MinaInstallWrapper.java:1059)
at
com.test.utils.hostinstall.MinaInstallWrapper.finalize(MinaInstallWrapper.java:82)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160
1. Any idea what may cause such a behavior?
2. Can it be related to running several SshClient instances (running in
separate threads)?
3. These are the relevant parts in the code:
private SshClient client = null;
private ClientSession session = null;
public MinaInstallWrapper() {
try {
client = SshClient.setUpDefaultClient();
client.start();
} catch (Throwable t) {
log.error("Unable to create SSH client.", t);
}
}
protected void finalize() throws Throwable {
try {
wrapperShutdown();
} finally {
super.finalize();
}
}
public void wrapperShutdown() {
if (session != null) {
session.close(true);
session = null;
}
if (client != null) {
client.stop();
client = null;
}
}
Appreciate any help on this,
Doron