[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