Re: [Zope-dev] Corrupt Data.fs: Is there a way of fixing transaction ids?

2002-08-04 Thread Jeremy Hylton

> "JW" == Joachim Werner <[EMAIL PROTECTED]> writes:

  JW> Hi!  I have a really large Data.fs file (1.3 GB) that has a
  JW> number of errors.  When I run the fstest.py script, I get this:

  JW> Problem: 109963117 object serialno 0x034573c4b6a2cb6e does not
  JW> match transaction id 0x034573c55c8c0dbb

  JW> How can I fix the Data.fs file? It should be possible to scan
  JW> the Data.fs and create correct serialnos or transaction ids for
  JW> the broken entries. But how exactly would I do that?

  JW> I'd also like to identify the corrupt entries (i.e. find out the
  JW> Zope object they belong to) to be able to eliminate them.

I'd start by running fsdump.py and identifying what transaction and
objects are affected by this problem.  fsdump will display transaction
metadata (like time) and oid & class for each object.

  JW> My ultimate question is how these corrupt entries can exist at
  JW> all. The Data.fs hit the 2 GB border once. So that could be a
  JW> reason. But even then it would be really nice for the ZODB to
  JW> not write corrupt entries ...

I agree that ZODB should not write the corrupt entries.  It's
possible, of course, that it didn't.  It's certainly possible for
bit-rot to strike a Data.fs, although it seems odd that the only
manifestation of a disk failure would be a mismatch between object
serialno and transaction id.

I might be able to help more by looking at the actual Data.fs.  Are
you in a position to share it?  (I can be discrete ;-).

Jeremy


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



Re: [Zope-dev] Corrupt Data.fs: Is there a way of fixing transaction ids?

2002-08-03 Thread Florent Guillaume

Joachim Werner <[EMAIL PROTECTED]> wrote:
> Problem: 109963117 object serialno 0x034573c4b6a2cb6e does not match
> transaction id 0x034573c55c8c0dbb
[...]
> I'd also like to identify the corrupt entries (i.e. find out the Zope object
> they belong to) to be able to eliminate them.

Here's a guess (I don't know if it'll work):
Convert the hexadecimal id to octal, and do:
import Zope
app = Zope.app()
ob = app._p_jar['\000\000\000\000\000(\347\026'] # here the octal string
print ob.id
print ob.__class__

HTH,

Florent
-- 
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87  http://nuxeo.com  mailto:[EMAIL PROTECTED]

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )



[Zope-dev] Corrupt Data.fs: Is there a way of fixing transaction ids?

2002-08-03 Thread Joachim Werner

Hi!

I have a really large Data.fs file (1.3 GB) that has a number of errors.
When I run the fstest.py script, I get this:

Problem: 109963117 object serialno 0x034573c4b6a2cb6e does not match
transaction id 0x034573c55c8c0dbb

How can I fix the Data.fs file? It should be possible to scan the Data.fs
and create correct serialnos or transaction ids for the broken entries. But
how exactly would I do that?

I'd also like to identify the corrupt entries (i.e. find out the Zope object
they belong to) to be able to eliminate them.

My ultimate question is how these corrupt entries can exist at all. The
Data.fs hit the 2 GB border once. So that could be a reason. But even then
it would be really nice for the ZODB to not write corrupt entries ...

Any help is appreciated ...

Thanks

Joachim


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )