Re: [Zope-dev] Re: Zope 2.7 and objects turning into None
Casey Duncan wrote at 2004-2-20 10:53 -0500: > ... >This is a guess, but perhaps the Catalog is masking some other low-level >error and returning None instead? I'll see if that seems possible from >the code. Some time ago, I found out that "OFS.Traversable.Traversable.unrestrictedTraverse" catched "ConflictError" and returned "default" if a "default" has been specified. I filed a bug report but I am not sure whether this was fixed (it is fixed in our Zope version, of course). -- Dieter ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: Zope 2.7 and objects turning into None
On Fri, 20 Feb 2004 10:53:30 -0500 Casey Duncan <[EMAIL PROTECTED]> wrote: > On Fri, 20 Feb 2004 09:47:47 +1100 > Richard Jones <[EMAIL PROTECTED]> wrote: > > > On Friday 20 February 2004 05:52, Dieter Maurer wrote: > > > We have a report for Zope 2.7 about an object magically turning > > > into "None" (1 or 2 weeks ago). > > > > Sorry, I haven't been following this thread, but I will note that > > I've seen (repeatably) in my test Zope environment this behaviour. > > > > This is probably unrelated though... > > > > For me, the situation comes about when I am loading up my fresh (ie. > > clean ZODB) test Zope with a thousand users. While the load script > > is running (it runs on the command-line and goes TTW using urllib to > > register the users) if I access a page which summarises all users, I > > *sometimes* get None for some of the users. The page uses a Catalog > > to find basic user info, and sometimes uses getObject() to find the > > real user object. The getObject() appears to return None sometimes. > > This is a guess, but perhaps the Catalog is masking some other > low-level error and returning None instead? I'll see if that seems > possible from the code. This is indeed possible. getObject swallows all errors and returns None when one occurs. This would make it return None on busy systems if the traversal during getObject raised a read ConflictError. I consider this a bug and I will look into what the *real* desired semantics are. I've been bitten myself by this in applications which naively assumed getObject would always return a Zope object. It might be sane to return None in the case where a cataloged object has been deleted and not uncataloged. For Zope 2.7 at least we should probably preserve these semantics. I propose however that if an unusual exception (ConflictError, MemoryError, SystemExit ;^) occurs, it should be propagated to the client, since it indicates a true exceptional condition. ConflictError propagation especially would help not miss results since it would force a retry of the transaction. This is crucial to applications which rely on catalog results to access objects which require action (I'm thinking specifically of the reindexObjectSecurity method in CMFCatalogAware). For Zope 2.8 it might be reasonable to consider also making the case where accessing objects that have been removed without uncataloging is also an exception. What do people think? -Casey ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Core Dump (Zope 2.7, Python 2.3.3, FreeBSD 4.5)
Dieter Maurer wrote at 2004-2-19 19:52 +0100: >We have a report for Zope 2.7 about an object magically turning >into "None" (1 or 2 weeks ago). > >A similar problem was discovered recently by a colleague. >I started analysing it today. It turned out that >objects are non-deterministically converted into "None". > >I have seen such behaviour in the past (with an old Python version). >Later, it turned out to be a memory corruption problem in this Python >version. >Memory corruption can also cause death with a core dump. > > >It is well possible that our problem is caused by >my Zope modifications or other (third party) C level extensions. >But, there might also be some lingering problem in Python2.3.3/Zope2.7. After having looked at the Python code, I recognize the extreme low likelyhood that a memory corruption manifests itself in objects becoming "None". I was able to explain most (if not all) of our problems from harmless causes: * I had a bare "return" in a function that should return a value -- protected by a condition that is true only under very special (history dependent) circumstances. This explains the apparently non-deterministic apparent "transition" to "None". In fact, no object transitioned to "None" and the behaviour was completely deterministic. * Another family of incidents where apparently constant objects became "None" was explained by the well known "refresh" property to bind the variables in a flushed module to "None". * A third report is not yet explained but I am confident that it, too, will find an explanation without a memory corruption assumption. -- Dieter ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: Zope 2.8
Christian Theune wrote: - Does a proposal for the post-traverse-hook have a chance for 2.8? (The code is here completely working on 2.7, I only need to write tests.) Please, write tests and merge to the HEAD. I see no reason why this shouldn't go into 2.8. Cheers, Evan @ 4-am ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: Zope 2.7 and objects turning into None
On Fri, 20 Feb 2004 09:47:47 +1100 Richard Jones <[EMAIL PROTECTED]> wrote: > On Friday 20 February 2004 05:52, Dieter Maurer wrote: > > We have a report for Zope 2.7 about an object magically turning > > into "None" (1 or 2 weeks ago). > > Sorry, I haven't been following this thread, but I will note that I've > seen (repeatably) in my test Zope environment this behaviour. > > This is probably unrelated though... > > For me, the situation comes about when I am loading up my fresh (ie. > clean ZODB) test Zope with a thousand users. While the load script is > running (it runs on the command-line and goes TTW using urllib to > register the users) if I access a page which summarises all users, I > *sometimes* get None for some of the users. The page uses a Catalog to > find basic user info, and sometimes uses getObject() to find the real > user object. The getObject() appears to return None sometimes. This is a guess, but perhaps the Catalog is masking some other low-level error and returning None instead? I'll see if that seems possible from the code. -Casey ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )