Hi - one of my seaside applications, still running 2.3, has suddenly
started to generate dozens of error messages like the one attached to
this message. As you can see #collectExpiredHanlders chokes on a
mismatch between the content of keysByHandler and handlersByKey, which
should never happen. Furthermore, I have never touched that part of
seaside in my code.
What I *think* is happening is: (i) a spider is generating a biggish
load (there were about 3000 handlers when I VNCed into the server and
netstat shows a couple of the usual suspects), (ii) seaside is reusing
some expired handlers to cope with the incoming session requests,
(iii) #collectExpiredHandlers first builds a collection of expired
handlers and then unregisters them one by one, but by the time it
sends #unregisterExpiredHandler:, the handler has been reused and its
key has changed, hence the lookup in #unregisterExpiredHandler:
triggers an error.
At this point, this is a guess based on various oddities I am seeing
when VNC-ing the image. Is it a plausible guess? Has anyone seen
anything like that?
thanks,
Michal
ps. when sending me the error msgs, sometimes #printString on a
collection of session objects also fails, generating recursive error
msgs, with ever longer stacks. On the above hypothesis this would be
due to key being swapped in/out while trying to #printString based on
the key.
--- Begin Message ---
Received: from (localhost) [127.0.0.1]
by e2011.hum.uit.no with esmtp (Exim 4.44 #1 (Debian))
id 1D2kq5-0006qr-KT; Sun, 20 Feb 2005 07:45:09 +0100
Received: from eden0.asp.ad.uit.no [129.242.232.14]
by localhost with IMAP (fetchmail-6.2.5)
for miso@localhost (single-drop); Sun, 20 Feb 2005 07:45:09 +0100 (CET)
Received: from EDENEVS1.asp.ad.uit.no ([129.242.8.29]) by
EDENEVS2.asp.ad.uit.no with Microsoft SMTPSVC(5.0.2195.6713);
Sun, 20 Feb 2005 08:09:23 +0100
Received: from mux2.uit.no ([129.242.5.252]) by EDENEVS1.asp.ad.uit.no with
Microsoft SMTPSVC(5.0.2195.6713);
Sun, 20 Feb 2005 08:09:23 +0100
Received: from polarling.auf.net (auf.net [129.242.176.75])
by mux2.uit.no (8.13.3/8.13.3/Mux) with ESMTP id j1K79N3j051555
for <michal.starke@xxxxxxxxxx>; Sun, 20 Feb 2005 08:09:23 +0100 (CET)
Date: Sun, 20 Feb 2005 08:09:23 +0100 (CET)
From: seaside@xxxxxxx
Received: from localhost ([127.0.0.1] helo=polarling.auf.net)
by polarling.auf.net with smtp (Exim 4.34)
id 1D2lQ9-0000XT-Ri
for admin@localhost; Sun, 20 Feb 2005 08:22:25 +0100
Error: key not found
Message-ID: <E1D2lQ9-0000XT-Ri@xxxxxxxxxxxxxxxxx>
X-Virus-Scanned: : ok
X-Scanned-By: MIMEDefang 2.36
Bcc:
X-OriginalArrivalTime: 20 Feb 2005 07:09:23.0591 (UTC)
FILETIME=[1B160170:01C5171B]
X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on e2011.hum.uit.no
X-Spam-Level:
X-Spam-Status: No, score=0.5 required=4.0 tests=AWL,MISSING_SUBJECT,
NO_REAL_NAME autolearn=no version=3.0.2
Dictionary(Object)>>error:
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
t1 'key not found'
--------
Dictionary>>errorKeyNotFound
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
--------
[] in Dictionary>>at:
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
t1 a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
--------
Dictionary>>at:ifAbsent:
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
t1 a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
t2 [] in Dictionary>>at:
t3 nil
--------
Dictionary>>at:
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
t1 a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
--------
WAApplication(WARegistry)>>unregisterRequestHandler:
self a WAApplication(/seaside/egg)
anObject a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
--------
[] in WAApplication(WARegistry)>>collectExpiredHandlers
self a WAApplication(/seaside/egg)
ea a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
--------
[] in Dictionary>>do:
self a Dictionary(ABMKgIMdBMFBJPKK->a
SeasideLoginSession(/seaside/egg/@AEEOvDzVnwHOYsLU) ALyRiyQSfCPqelX...etc...
t1 [] in WAApplication(WARegistry)>>collectExpiredHandlers
--------
Dictionary(Set)>>do:
self a Dictionary(ABMKgIMdBMFBJPKK->a
SeasideLoginSession(/seaside/egg/@AEEOvDzVnwHOYsLU) ALyRiyQSfCPqelX...etc...
t1 [] in Dictionary>>do:
t3 558
--------
Dictionary>>do:
self a Dictionary(ABMKgIMdBMFBJPKK->a
SeasideLoginSession(/seaside/egg/@AEEOvDzVnwHOYsLU) ALyRiyQSfCPqelX...etc...
t1 [] in WAApplication(WARegistry)>>collectExpiredHandlers
--------
WAApplication(WARegistry)>>collectExpiredHandlers
self a WAApplication(/seaside/egg)
ea a SeasideLoginSession(/seaside/egg/@IkcUsgOqbtfKpaVQ)
--------
WAApplication(WARegistry)>>registerRequestHandler:
self a WAApplication(/seaside/egg)
anObject a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
key rMZBsSLajhLcgOro
--------
[] in WAApplication(WARegistry)>>urlForRequestHandler:path:
self a WAApplication(/seaside/egg)
anObject a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
pathString '/seaside/egg'
key nil
--------
Dictionary>>at:ifAbsent:
self a Dictionary(a
SeasideLoginSession(/seaside/egg/@AAAMcoZOuxjenkGl)->AAAMcoZOuxjenkGl a
SeasideLoginS...etc...
t1 a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
t2 [] in
WAApplication(WARegistry)>>urlForRequestHandler:path:
t3 nil
--------
WAApplication(WARegistry)>>urlForRequestHandler:path:
self a WAApplication(/seaside/egg)
anObject a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
pathString '/seaside/egg'
key nil
--------
SeasideLoginSession(WASession)>>actionUrlForKey:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aString 'yjPfgboF'
--------
SeasideLoginSession(WASession)>>actionUrlForContinuation:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aContinuation a Continuation
--------
[] in SeasideLoginSession(WASession)>>respond:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
responseBlock [] in SeasideLoginSession(WASession)>>redirect
request nil
cc a Continuation
url nil
ea nil
--------
Continuation class>>currentDo:
self Continuation
aBlock [] in SeasideLoginSession(WASession)>>respond:
--------
SeasideLoginSession(WASession)>>respond:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
responseBlock [] in SeasideLoginSession(WASession)>>redirect
request nil
cc a Continuation
url nil
ea nil
--------
SeasideLoginSession(WASession)>>redirect
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
url nil
--------
[] in SeasideLoginSession(WASession)>>enterSession:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in
SeasideLoginSession(WASession)>>enterSessionWithRequest:
--------
BlockContext>>on:do:
self [] in SeasideLoginSession(WASession)>>enterSession:
exception Error
handlerAction MessageSend(#handleError: -> a
SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk))
handlerActive true
--------
[] in SeasideLoginSession(WASession)>>withErrorHandler:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
--------
BlockContext>>on:do:
self [] in SeasideLoginSession(WASession)>>withErrorHandler:
exception Warning
handlerAction MessageSend(#handleWarning: -> a
SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk))
handlerActive true
--------
SeasideLoginSession(WASession)>>withErrorHandler:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
--------
[] in SeasideLoginSession(WASession)>>enterSession:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in
SeasideLoginSession(WASession)>>enterSessionWithRequest:
--------
[] in SeasideLoginSession(WASession)>>withEscapeContinuation:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
cc a Continuation
--------
Continuation class>>currentDo:
self Continuation
aBlock [] in
SeasideLoginSession(WASession)>>withEscapeContinuation:
--------
SeasideLoginSession(WASession)>>withEscapeContinuation:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
cc a Continuation
--------
[] in SeasideLoginSession(WASession)>>enterSession:
self a SeasideLoginSession(/seaside/egg/@megMRBiZXfEdpGXk)
aBlock [] in
SeasideLoginSession(WASession)>>enterSessionWithRequest:
--------
[] in WAProcessMonitor>>critical:
self a WAProcessMonitor
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
value nil
--------
BlockContext>>ensure:
self [] in WAProcessMonitor>>critical:
aBlock [] in WAProcessMonitor>>critical:
returnValue nil
--------
[] in WAProcessMonitor>>critical:
self a WAProcessMonitor
aBlock [] in SeasideLoginSession(WASession)>>enterSession:
value nil
--------
[] in BlockContext>>newProcess
self [] in WAProcessMonitor>>critical:
--------
--- End Message ---
_______________________________________________
Seaside mailing list
Seaside@xxxxxxxxxxxxxxxxxxxxxxxxxx
http://lists.squeakfoundation.org/listinfo/seaside
|