From: Luke O. <lu...@me...> - 2002-08-14 17:00:22
|
Hello - I've got some issues, some errors that I haven't pinned down, and some questions. This is pretty long. First some simple questions: How does canBeReused really affect the servlet cache? Because I have servlets with that set to 0, which show up in the Admin Servlet Cache, and may be requested dozens of times, but the timestamp doesn't change[. Also, how does the Servlet Cache interact with AppServer restarts? I expected it to be cleared on restart, but apparently not? (I'm not talking about PSPs here.) Background: Using Webware 7b2, IIS5, Python 2.1, and FunFormKit, we have a set of servlets that for odd reasons must have canBeReused=0. (Otherwise, awake is not called after the first response cycle. Very odd, but changing canBeReused has been our temporary/now-permanent solution.) However, at irregular intervals these sets of Servlets (which are used on all of our sites, they are the content management backend functions) start immediately errorring with the following message: Traceback (most recent call last): File ".\WebKit\Application.py", line 388, in dispatchRequest self.handleGoodURL(transaction) File ".\WebKit\Application.py", line 535, in handleGoodURL self.awake(transaction) File ".\WebKit\Application.py", line 709, in awake transaction.awake() File ".\WebKit\Transaction.py", line 100, in awake self._servlet.awake(self) File "e:\...\staff\Content\SiteThing.py", line 8, in awake File "e:\...\staff\Content\SiteContent.py", line 17, in awake TypeError: unbound method awake() must be called with instance as first argument (The servlet hierarchy looks something like: /staff/Content/index.py (has canBeReused=0) -> SiteContent.py -> SiteThing.py -> add.py -> edit.py .... and the error may occur on SiteThing, add, edit, or any other subclass of SiteContent) This error will continue for every request until the AppServer is restarted. Even then, usually for the next several AppServer restarts it will work for one request and then start giving that error again. After a few minutes (whether we leave the AppServer, or repeatedly restart it), an AppServer restart will fix it and the problem may not come up for a few days. Any thoughts? The awake portions of these base classes are pretty simple, here is part of SiteContent.py: class SiteContent(index): def __init__(self): index.__init__(self) self._sectionID = '' self._thingID='' self._catID='' self._formDef='' def awake(self, trans): index.awake(self, trans) app = self.application() trans = self.transaction() req = self.request() if not req.hasField('sectionID'): app.forward(trans, self.dotUrl('staff/Content/index')) self._error = None Here is awake() of SiteThing.py: class SiteThing(SiteContent): def awake(self, trans): SiteContent.awake(self, trans) And index.py def awake(self, trans): self.setDots(trans, '../../') SecureBackend.awake(self, trans) Certainly part of problem right now is that we have no consistent way to duplicate the problem, but I'm going to try to do that today. I know someone mentioned the unbound method problem before, related to multiple imports I believe. I've tried to figure out how this could be related to that, but it would almost have to be outside our code (in ServletFactory or Application?). Which makes me think it could have to do with canBeReused (since these are the only servlets we have that set that to false). Lots of thoughts, and not much idea. Thanks, Luke ------------------------------------------------- This mail sent through IMP: http://horde.org/imp/ |