Status: Accepted
Owner:
[hidden email]
Labels: Type-Defect Priority-Medium GLASS-Server Version-1.0-beta.8
New issue 282 by
[hidden email]: Swazoo server crashing with 'aGsSocket
that has some associated session state has lost that transient state.' error
http://code.google.com/p/glassdb/issues/detail?id=282This is an error message that I have seen a number of times when running
Swazoo2 2.2.0.3 in GemStone3.0:
----------------------------------
GemStone: Error Nonfatal
a ImproperOperation occurred (error 2364), The object aGsSocket that
has some associated session state has lost that transient state. Examples
of classes that use session state are GsSocket and GsFile.
Error Category: 231169 [GemStone] Number: 2364 Arg Count: 2 Context :
250266113 exception : 278417921
Arg 1: [250266625 sz:7 cls: 135425 GsSocket] aGsSocket
Arg 2: [20 sz:0 cls: 76289 UndefinedObject] nil
topaz > exec iferr 1 : where
==> 1 AbstractException >> _signalFromPrimitive: (envId 0) @6 line 15
[methId 4600321]
2 GsSocket >> _twoArgPrim:with:with: (envId 0) @1 line 1
[methId 9349121]
3 GsSocket >> accept (envId 0) @10 line 22
[methId 9389825]
4 SpSocket >> accept (envId 0) @3 line 8
[methId 30577665]
5 SpSocket >> acceptRetryingIfTransientErrors (envId 0) @2 line 6
[methId 30578945]
6 SwazooSocket >> accept (envId 0) @4 line 2
[methId 147329281]
7 [] in HTTPServer >> acceptConnection (envId 0) @3 line 7
[methId 655491841]
8 ExecBlock >> on:do: (envId 0) @3 line 42
[methId 3846145]
9 HTTPServer >> acceptConnection (envId 0) @2 line 8
[methId 655489793]
10 [] in HTTPServer >> start (envId 0) @2 line 6
[methId 156834305]
11 GsProcess >> _start (envId 0) @7 line 15
[methId 4552961]
12 GsNMethod class >> _gsReturnToC (envId 0) @1 line 1
[methId 4539649]
[GsProcess 250266113]
topaz 1> topaz 1> [268 sz:0 cls: 68097 Boolean] true
topaz 1>
[Info]: Logging out at 07/29/11 12:03:34 PDT
--------------------
I tracked the problem down to the fact that after a full continuation is
snapped off for handling errors, the GsSocket is persisted and can
eventually result in this error ... The fix is to wrap the socket instance
with a TransientValue to avoid persisting the GsSocket instance ... the
problem may be only an issue for GemStone 3.0, but I can't be sure.
Here's the fix:
HTTPServer:
socket
socket ifNil: [ ^ nil ].
^ socket value
socket: aSocket
socket := TransientValue value: aSocket
I'll fix the bug when I've incorporated the fix into a new version of
Swazoo (for GemStone)