Great job! Trustin. I just updated mina trunk and tried acceptor.getSessionConfig().setReuseAddress(true); and it works like magic in the production server!
Sorry about not providing enough problem trace when I reported the issue on my server - the major reason among others is that the water is still too deep to me. Trustin Lee wrote: > > Hi Vinod, > > On 4/5/07, Vinod Panicker <[EMAIL PROTECTED]> wrote: >> On 4/5/07, Trustin Lee <[EMAIL PROTECTED]> wrote: >> > On 4/5/07, Coding Horse <[EMAIL PROTECTED]> wrote: >> > > >> > > But why didn't I have this problem before using mina? I used nio >> directly >> > > and never called setReuseAddres(). The server was in the same linux >> box >> > > before using mina. >> > >> > Why don't you trace the problem and let us know why if you are having >> > the problem? I can't fix it because it works OK for me. >> >> I believe this problem will show itself only when the disconnected >> client sockets are in a *_WAIT state. To reproduce this, you will >> need to use clients that are not local (since the sockets get recycled >> pretty fast), but rather on the internet or on some simulated low >> bandwidth / high latency connection. > > I was able to reproduce this problem in my Linux box today. I tried > three scenarios: > > 1) Server starts up, and killed -9: OK with rebinding > 2) Server starts up, a client connects, the connection closes, and > killed -9: OK with rebinding > 3) Server starts up, a client connects, and server gets killed -9.: > Gets BindException on rebinding. > > Looking closely the scenario 3, I found a connection with TIME_WAIT > state through netstat. I was able to bind again after the TIME_WAIT > state goes away. > > I tried the following solutions: > > 1) acceptor.setReuseAddress(true); -> doesn't work. > 2) acceptor.getSessionConfig().setReuseAddress(true); -> works! > > It seems like Linux doesn't clean up connection state and prevents > binding the port which the dangling connection is referencing. It > seems like setting a SO_REUSE_ADDR on an accepted socket disables the > protection. I'm not sure how this differs in Windows. > > Trustin > -- > what we call human nature is actually human habit > -- > http://gleamynode.net/ > -- > PGP Key ID: 0x0255ECA6 > > -- View this message in context: http://www.nabble.com/Question-About-Port-Stucking%28It-has-troubled-me-4-a-very-long-term%29-tf2697476.html#a9856385 Sent from the mina dev mailing list archive at Nabble.com.
