Accueil » Zope » Forum Zope » Forum Général Zope » ZODB corrompu suite à une crash disque

 • ZODB corrompu suite à une crash disque

Document Actions
Réponses: 11   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

 • ZODB corrompu suite à une crash disque

Posté par kwa29 le 30/06/2008 23:56
Bonsoir, Je viens vous demander une grosse aide car je ne m'en sors pas. Suite à un problème de disque dur, je me suis retrouvé avec une zodb de 1.7Go corrompu. Le message d'erreur est le suivant :
code:
File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 213, in get     p, serial = self._storage.load(oid, self._version)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 548, in load     pos = self._lookup_pos(oid)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 514, in _lookup_pos     raise POSKeyError(oid) POSKeyError: 0x126e 2008-06-30 23:45:14 ERROR ZODB.Connection Couldn't load state for 0x01 Traceback (most recent call last):   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 761, in setstate     self._setstate(obj)   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 819, in _setstate     self._reader.setGhostState(obj, p)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 604, in setGhostState     state = self.getState(pickle)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 597, in getState     return unpickler.load()   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 471, in _persistent_load     return self.load_oid(reference)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 537, in load_oid     return self._conn.get(oid)   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 213, in get     p, serial = self._storage.load(oid, self._version)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 548, in load     pos = self._lookup_pos(oid)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 514, in _lookup_pos     raise POSKeyError(oid) POSKeyError: 0x126e Traceback (most recent call last):   File "/usr/lib/zope2.10/lib/python/Zope2/Startup/run.py", line 56, in ?     run()   File "/usr/lib/zope2.10/lib/python/Zope2/Startup/run.py", line 21, in run     starter.prepare()   File "/usr/lib/zope2.10/lib/python/Zope2/Startup/__init__.py", line 102, in prepare     self.startZope()   File "/usr/lib/zope2.10/lib/python/Zope2/Startup/__init__.py", line 278, in startZope     Zope2.startup()   File "/usr/lib/zope2.10/lib/python/Zope2/__init__.py", line 47, in startup     _startup()   File "/usr/lib/zope2.10/lib/python/Zope2/App/startup.py", line 102, in startup     OFS.Application.initialize(application)   File "/usr/lib/zope2.10/lib/python/OFS/Application.py", line 309, in initialize     initializer.initialize()   File "/usr/lib/zope2.10/lib/python/OFS/Application.py", line 330, in initialize     self.install_cp_and_products()   File "/usr/lib/zope2.10/lib/python/OFS/Application.py", line 350, in install_cp_and_products     app._setObject('Control_Panel', cpl)   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 761, in setstate     self._setstate(obj)   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 819, in _setstate     self._reader.setGhostState(obj, p)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 604, in setGhostState     state = self.getState(pickle)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 597, in getState     return unpickler.load()   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 471, in _persistent_load     return self.load_oid(reference)   File "/usr/lib/zope2.10/lib/python/ZODB/serialize.py", line 537, in load_oid     return self._conn.get(oid)   File "/usr/lib/zope2.10/lib/python/ZODB/Connection.py", line 213, in get     p, serial = self._storage.load(oid, self._version)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 548, in load     pos = self._lookup_pos(oid)   File "/usr/lib/zope2.10/lib/python/ZODB/FileStorage/FileStorage.py", line 514, in _lookup_pos     raise POSKeyError(oid) ZODB.POSException.POSKeyError: 0x126e zopectl>
et zope s'arrête. J'ai tenté le coup avec les articles suivants : http://www.zopelabs.com/cookbook/1054240694 http://www.zope.org/Members/itamar/CorruptedZODB http://www.zopelabs.com/cookbook/1020679104 mais au final je me retrouve toujours avec la même erreur.
code:
ZODB.POSException.POSKeyError: 0x126e
Je ne sais vraiment plus quoi faire. Sinon utiliser un logiciel de récupération de données... En attente de vos conseils ou aide, j'en ai vraiment besoin. Merci à vous tous par avance.
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par ychaouche le 01/07/2008 00:41
    Que se passe-t-il quand tu essayes la première recette ? est-ce que tu as pu obtenir l'oid de l'objet qui casse tout ?

    Si tu l'as obtenu, as-tu essayé la troisième recette pour pouvoir l'inspecter et voir ce qui ne va pas ? si tu as son id tu dois aussi pouvoir le supprimer.

    Quel ton environnement ? (système, version de zope, python, éventuellement CMS si tu en a un d'installé...)
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 01/07/2008 08:37
    Merci pour ta réponse ychaouche.
    Donc pour te répondre :
    Que se passe-t-il quand tu essayes la première recette ? est-ce que tu as pu obtenir l'oid de l'objet qui casse tout ?

    Lors de la première recette, le data.fs ne fais plus que 256Mo et l'erreur sur OID 0x126e réapparrait

    Si tu l'as obtenu, as-tu essayé la troisième recette pour pouvoir l'inspecter et voir ce qui ne va pas ? si tu as son id tu dois aussi pouvoir le supprimer.

    Justement c'est ce passage là que je ne dois pas réussir. Si tu peux m'aider sur ce point ...

    Quel ton environnement ? (système, version de zope, python, éventuellement CMS si tu en a un d'installé...)

    L'environnement natif est un linux centos 5.1 avec python 2.4.4, zope 2.10.5 et plone 3.1.2.
    Mes essais ont été fait sur cette environnement ainsi qu'un windows Xp + plone en fresh install
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par ychaouche le 01/07/2008 08:51
    Salut kwa29,

    Pourquoi tu ne réussies pas la troisième recette, tu as des erreurs ? quelles sont elles ?

    Peux-tu mettre ta zodb quelque part où on puisse la télécharger ? (exemple dl.free.fr)
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 01/07/2008 14:45
    Voici le message d'erreur originale (je reviens à la base car je ne dois pas faire un truc qui va)

    2008-07-01 14:43:07 DEBUG ZODB.BaseStorage create storage C:\Program Files\Plone
    3\Data/var/Data.fs
    2008-07-01 14:43:11 CRITICAL ZODB.FileStorage C:\Program Files\Plone 3\Data/var/
    Data.fs data record exceeds transaction record at 274465204
    Traceback (most recent call last):
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\run.py", line 56,
    in ?
    run()
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\run.py", line 21,
    in run
    starter.prepare()
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\__init__.py", lin
    e 356, in prepare
    ZopeStarter.prepare(self)
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\__init__.py", lin
    e 103, in prepare
    self.startZope()
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\__init__.py", lin
    e 279, in startZope
    Zope2.startup()
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\__init__.py", line 47, in
    startup
    _startup()
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\App\startup.py", line 59,
    in startup
    DB = dbtab.getDatabase('/', is_root=1)
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\datatypes.py", li
    ne 280, in getDatabase
    db = factory.open(name, self.databases)
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\datatypes.py", li
    ne 178, in open
    DB = self.createDB(database_name, databases)
    File "C:\Program Files\Plone 3\Zope\lib\python\Zope2\Startup\datatypes.py", li
    ne 175, in createDB
    return ZODBDatabase.open(self, databases)
    File "C:\Program Files\Plone 3\Zope\lib\python\ZODB\config.py", line 97, in op
    en
    storage = section.storage.open()
    File "C:\Program Files\Plone 3\Zope\lib\python\ZODB\config.py", line 135, in o
    pen
    quota=self.config.quota)
    File "C:\Program Files\Plone 3\Zope\lib\python\ZODB\FileStorage\FileStorage.py
    ", line 169, in __init__
    read_only=read_only,
    File "C:\Program Files\Plone 3\Zope\lib\python\ZODB\FileStorage\FileStorage.py
    ", line 1735, in read_index
    name, pos)
    File "C:\Program Files\Plone 3\Zope\lib\python\ZODB\FileStorage\FileStorage.py
    ", line 52, in panic
    raise CorruptedTransactionError(message)
    ZODB.FileStorage.FileStorage.CorruptedTransactionError: %s data record exceeds t
    ransaction record at %s

    C:\Program Files\Plone 3\Data\bin>
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 01/07/2008 14:45
    Donc :
    CRITICAL ZODB.FileStorage C:\Program Files\Plone 3\Data/var/
    Data.fs data record exceeds transaction record at 274465204
    et
    ZODB.FileStorage.FileStorage.CorruptedTransactionError: %s data record exceeds t
    ransaction record at %s

    sont peut être des messages qui vous parlent plus qu'à moi.
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 01/07/2008 14:46
    Pour ychaouche : je n'arrive pas à faire la troisième recette pourrais tu m'indiquais la marche à suivre??
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 01/07/2008 14:49
    sinon j'ai utilisé la commande suivante :
    C:\Program Files\Plone 3>python Zope/lib/python/ZODB/fsrecover.py -v 1 Data.fs Data.fs.recover
    qui me donne ce résultat là :
    begin 269406068 2008-03-05 12:50:57.984228 finish
    begin 269406860 2008-03-05 12:51:05.581278 finish
    error reading txn header: redundant transaction length check failed at 274790108

    error reading txn header: invalid transaction length, 0, at 269407266
    error reading txn header: invalid transaction length, 0, at 269472911
    error reading txn header: invalid transaction length, 0, at 269538556
    error reading txn header: invalid transaction length, 0, at 269604201
    error reading txn header: invalid transaction length, 0, at 269669846
    error reading txn header: invalid transaction length, 0, at 269735491
    error reading txn header: invalid transaction length, 0, at 269735633
    error reading txn header: invalid transaction length, 0, at 269801278
    error reading txn header: invalid transaction length, 0, at 269801350
    error reading txn header: invalid transaction length, 0, at 269801456
    error reading txn header: invalid transaction length, 0, at 269801738
    error reading txn header: invalid transaction length, 0, at 269801903
    error reading txn header: invalid transaction length, 0, at 269802077
    error reading txn header: invalid transaction length, 0, at 269802230
    error reading txn header: invalid transaction length, 0, at 269802327
    error reading txn header: invalid transaction length, 0, at 269867972
    [...]
    Au final un data.fs de 256Mo avec en plus un .index et .tmp de 36Mo.
    j'ai tenté le coup avec ce data.fs mais je me retrouve avec l'erreur sur l'OID 0x126e
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 02/07/2008 08:40
    ychaouche ou si quelqu'un veut bien me filer un coup de main j'ai posé le data.fs sur dl.free.fr
    Comment peut on se contacter en mp ?
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par ychaouche le 02/07/2008 12:36
    Salut kwa29,

    Malheureusement je suis en fin de régie en ce moment et ça bosse dur et tard donc je ne peux pas me permettre de passer trop de temps sur un problème donné et les crashs de DB en général ça demande du temps.

    Pas de MP ici à ma connaissance, mais si tu t'abonnes à un fil de discussion tu recevras les notifications par mails avec l'e-mail de l'émetteur au lieu de l'e-mail de l'afpy. Tu peux donc utiliser l'échange de mails standards plutôt que MP.

    Bon courage, @+
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par kwa29 le 02/07/2008 16:01
    OK. Je viens de m'abonner. Ecris juste un petit mot dans ce fil j'aurais ton email.
  •  • Re: ZODB corrompu suite à une crash disque

    Posté par ychaouche le 04/07/2008 11:10
    a