[kaffe] Sockets remain unclosed
Ito Kazumitsu
ito.kazumitsu at hitachi-cable.co.jp
Tue Mar 16 21:52:02 PST 2004
Old story:
http://article.gmane.org/gmane.comp.java.jetty.support/4555
http://www.kaffe.org/pipermail/kaffe/2004-January/045001.html
http://article.gmane.org/gmane.comp.java.jetty.support/4561
http://www.kaffe.org/pipermail/kaffe/2004-January/045008.html
Summary:
When you use Jetty with Kaffe, the number of idle sockets
gradually increases until "too many open files" error may occur.
The value of Jetty's parameter MaxIdleTimeMs is 10000 ms by default,
so a new socket is created and thrown away in every 10 seconds.
Setting MaxIdleTimeMs to a reasonable value will slow down the
the creation of new sockets and you can avoid "too many open files".
That was not a complete solution. Although the creation of new sockets
can be slowed down, the number of sockets still increases gradually.
I patched java/net/ServerSocket.java to see if this problem can be
solved. The result is satisfactory.
The following patch is against the released version 1.1.4.
--- java/net/ServerSocket.java.orig Sat Jan 10 02:38:16 2004
+++ java/net/ServerSocket.java Wed Mar 17 11:59:06 2004
@@ -322,7 +322,16 @@
sm.checkListen (impl.getLocalPort ());
Socket socket = new Socket();
- implAccept (socket);
+ try {
+ implAccept (socket);
+ }
+ catch (IOException e) {
+ try {
+ socket.close ();
+ }
+ catch (IOException _) {}
+ throw e;
+ }
return socket;
}
More information about the kaffe
mailing list