I can see your point, but it's not quite correct to call this "ZODB corruption". This was (and is) related to a Zope programming error. Perhaps ZDiscussion.zexp does some funky things in instance space on an import that it shouldn't do. I imagine if we unraveled this far enough that we could pick the error out (not going to try :-). I'd argue that the ZODB is a very independent component of Zope, and it shouldn't be blamed for this. Devil's advocate question: if your Perl application failed because it couldn't find a record in an Oracle database, would you immediately chalk this up to database corruption and Oracle? We do clearly need to work on Zope tools to make it easier to find and clear "orphaned" instances in the ZODB. We should also try to weed out the programming errors which cause interdependencies of seemingly unrelated components of the same Zope instance that cause failures like this. Transactions are only tangentially related to this issue (I'm not sure how the "Added globals" transaction 'referred to' the "Installed product DemoPortal" transaction in your example, BTW). BTW, I'm being sort of pedantic because when people hear "ZODB" and "corruption" in the same sentence, they tend to get scared and think of ZODB as "unstable" which is really not the case... most purported "ZODB corruption" issues are caused by programming errors in Products. This has been the case for at least every one but one (the >2G pointer bug) that I've personally seen. ----- Original Message ----- From: "Bill Welch" <bill@carbonecho.com> To: "Chris McDonough" <chrism@digicool.com> Cc: <zope@zope.org> Sent: Wednesday, November 08, 2000 2:59 PM Subject: Re: [Zope] Is data.fs corrupted?
In my case, I couldn't import DemoPortal.zexp or Wizard.zexp from PTK because oid 1377 was already in use. The pickle dump that followed contained references to ZDiscussions, which I had deleted some time before.
After deleting the offending products and their directories, restarting zope, and packing, I ran tranalyzer -r on my problem Data.fs. I found that the problem oid was in this transaction:
"/Control_Panel/Products/manage_importObject
import into /var/lib/zope/var/Data.fs from /var/lib/zope/import/ZDiscussions.zexp"
referred to by this transaction:
"Installed product DemoPortal"
in turn, referred to by this tranaction:
"Added Globals"
I think ZODB corruption when I see a record in one product refer to a record in an independent product and when the transaction of a deleted product doesn't go away.
On Wed, 8 Nov 2000, Chris McDonough wrote:
I think it is ZODB corruption.
This is very unlikely. What makes you think this?