On Tue, Feb 24, 2009 at 3:45 PM, Guillaume Nodet <gno...@gmail.com> wrote: > This explanation is more in line with what I found. I'm not sure > either why the socket connection works. I've tried to add a sleep > between the suspend and connect but to no avail.
I don't think that the suspend is the origin of the problem. I will do some more debugging on Mac in a few hours. seems like the socket.connect() hangs, but I don't know if the acceptor receives any incoming request. I'm wondering if there is not a big issue in the AbstractPollingIoAcceptor.Acceptor.run() method : ... // Now, if the number of registred handles is 0, we can // quit the loop: we don't have any socket listening // for incoming connection. if (nHandles == 0) { synchronized (lock) { if (registerQueue.isEmpty() && cancelQueue.isEmpty()) { acceptor = null; break; } } } ... when we call the server.suspend() method. If we don't get out of the loop, or if the lock is handled by some other thread, we might have a problem. As I don't have a mac here, I can't check atm. > > 2009/2/24 Emmanuel Lecharny <elecha...@apache.org>: >> Ok, I have been able to go a bit further on Windows. >> >> The slector.keys().isEmpty() returns true too, so we also exit from >> the server acceptor loop. >> >> When the client tries to connect again, it can't and an exception is >> thrown (which is expected). >> >> As far as I remember, on mac, this is where the test blcok : the >> >> try { >> client.connect("localhost", port); >> >> code waits forever, when it should get out immediately with this exception : >> >> >> java.net.ConnectException: Connection refused: connect >> at java.net.PlainSocketImpl.socketConnect(Native Method) >> at java.net.PlainSocketImpl.doConnect(Unknown Source) >> at java.net.PlainSocketImpl.connectToAddress(Unknown Source) >> at java.net.PlainSocketImpl.connect(Unknown Source) >> at java.net.SocksSocketImpl.connect(Unknown Source) >> at java.net.Socket.connect(Unknown Source) >> at org.apache.commons.net.SocketClient.connect(SocketClient.java:176) >> at >> org.apache.ftpserver.clienttests.SuspendResumeTest.testSuspendResumeServer(SuspendResumeTest.java:46) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >> at java.lang.reflect.Method.invoke(Unknown Source) >> at junit.framework.TestCase.runTest(TestCase.java:164) >> at junit.framework.TestCase.runBare(TestCase.java:130) >> at junit.framework.TestResult$1.protect(TestResult.java:106) >> at junit.framework.TestResult.runProtected(TestResult.java:124) >> at junit.framework.TestResult.run(TestResult.java:109) >> at junit.framework.TestCase.run(TestCase.java:120) >> at >> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) >> at >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) >> >> For some reason, it does not ... Why ??? >> >> -- >> Regards, >> Cordialement, >> Emmanuel Lécharny >> www.iktek.com >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com > -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com