Re: [Zope-dev] Re: Zope 2.7 and objects turning into None

2004-02-20 Thread Dieter Maurer
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

2004-02-20 Thread Casey Duncan
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)

2004-02-20 Thread Dieter Maurer
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

2004-02-20 Thread Evan Simpson
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

2004-02-20 Thread Casey Duncan
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 )