[Seaside] Connection Closed failure - should something handle this?

TimM tamackinnon at gmail.com
Fri Aug 20 06:34:25 UTC 2010


I hit an interesting failure case this morning - I've been running Pharo 
Seaside3.0rc3 on my laptop and leaving it running in the background 
while I read about things, browse the web and suspend my laptop from 
time to time etc.

Things have been running well for a day, however this morning I noticed 
two walkbacks in my image, and the root cause seemed to be the 
Socket>>waitForDatFor: method.

I'm wondering if this is a legitimate failure case (from the above I've 
been a bit cavalier in suspend/resume etc - however looking at the 
error, I'm wondering if this could happen on a server?). Searching on 
the list, I can see others mention it but no-one comments on what do do.

I can see how the below method signals a failure (and given my suspend, 
resume and I can understand it) - but should something handle this 
rather than showing a debugger? Its left me wondering if I was running 
on a server, would I get debuggers everywhere - or do people configure 
things so this type of thing gets logged somewhere?

In Java this would get logged at an out level and execution would 
continue, what do people do in Pharo/Seaside?

Tim

waitForDataFor: timeout
	"Wait for the given nr of seconds for data to arrive.
	Signal a time out or connection close exception if either happens 
before data becomes available."

	^self
		waitForDataFor: timeout
		ifClosed: [ConnectionClosed signal: 'Connection closed while waiting 
for data.']
		ifTimedOut: [ConnectionTimedOut signal: 'Data receive timed out.']

[] in Socket>>waitForDataFor:
Socket>>waitForDataFor:ifClosed:ifTimedOut:
Socket>>waitForDataFor:
Socket>>receiveDataSignallingTimeout:into:startingAt:
SocketStream>>receiveData
SocketStream>>upToAll:
HttpRequest>>readRequestHeaderFrom:
HttpRequest>>initializeFromStream:
HttpRequest class>>readFromStream:
WAListenerAdaptor>>requestFor:
WAListenerAdaptor(WAServerAdaptor)>>contextFor:
WAListenerAdaptor(WAServerAdaptor)>>process:
[] in [] in [] in WAListenerAdaptor>>waitForConnection:
BlockClosure>>ensure:
[] in [] in WAListenerAdaptor>>waitForConnection:
BlockClosure>>ifCurtailed:
[] in WAListenerAdaptor>>waitForConnection:
[] in BlockClosure>>newProcess



More information about the seaside mailing list