Re: Socket problem with Jigsaw

On Tue, 2 Sep 1997, Frederic Crozat ISIMA wrote:

> I still have some problems with beta1 (I think those problems were
> present in alpha5) concerning socket :
> 
> I encounter very often "socket Exception" like this one in the errlog
> client-10(socket-clients:10): caught ClientException:
> [w3c.jigsaw.http.ClientException] Socket closed
> 
> and with beta 1, it occurs at 
> java.net.SocketException: Socket closed
>        at java.net.PlainSocketImpl.setOption(PlainSocketImpl.java:169)
>        at java.net.Socket.setTcpNoDelay(Socket.java:311)
>        at w3c.jigsaw.http.httpd.run(httpd.java)
>        at java.lang.Thread.run(Thread.java)
> I've tried to comment the setTcpDelay but the errlog entry appears
> sometimes. I was thinking it could be related to Netscape 3.0 but it
> also have this problem with a java application wich uses Jigsaw client
> side API (and also with Jigadm). When this error is encountered, the
> socket is supposed to be closed but if I check with netstat, it's still
> open !

I have never seen this error before. It seems that Jigsaw hasn't been 
notified of the socket close. In fact you said that a netstat was showing 
the socket as still active, so it looks like a jdk bug more than a Jigsaw 
bug.
Anyway, we will inquire on this one!

> Another big problem is that when some clients are still connected to
> Jigsaw (in a keepalive idleconnection), when I try to stop the server,
> it closes its server socket but it doesn't stop itself. I've used the
> debug feature of SocketClientFactory to trace the problem and it seems 
> that Jigsaw make a join() on each client socket after killing them but 
> it wait on join on client sockets still open (by a keepalive client,
> they still appear as open in netstat). 
> It seems that Jigsaw is waiting for the socket to close themselves 
> but they don't !

The sockets have a timeout, 2 timeouts in fact. But the shutdown of the 
server FORCES the shutwodn of the all the clients (first step, close the 
idling clients, second step after a small wait, kill everything).
You can see w3c/jigsaw/http/socket/SocketClientFactory.java  killClients
There souldn't be any open socket at the end of this method call. Another 
jdk bug? (It works well on solaris and NT using Sun's jdk 1.1.3).

      /\          - Yves Lafon - World Wide Web Consortium - 
  /\ /  \                Architecture Domain - Jigsaw
 /  \    \/\    
/    \   /  \   http://www.w3.org/People/Lafon - ylafon@w3.org    

Received on Wednesday, 3 September 1997 05:23:48 UTC