logo       

handler reuse bug? [2.3]: msg#00101

Subject: handler reuse bug? [2.3]
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
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
linux.arklinux....    user-groups.lin...    kde.usability/2...    ietf.ipp/2002-0...    mail.spam.spamc...    os.netbsd.devel...    audio.cd-record...    text.unicode.de...    php.documentati...    games.fps.halfl...    window-managers...    suse.oracle.gen...    bug-tracking.gn...    video.dvdrip.us...    xfree86.cvs/200...    java.netbeans.m...    network.argus/2...    culture.sf.kill...    debian.ports.al...    freebsd.questio...    qplus.devel/200...    handhelds.palm....   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe