Eine Ebene höher
Die Anleitung unter http://www.zopelabs.com/cookbook/1054240694 würde
wohl funktionieren, wenn ich wüsste, wie ich das defekte Objekt
herausfinden könnte. Im Traceback kann ich die Info jedenfalls nicht
finden. Gemäss Anleitung muss ich unter Punkt die url_to_obj angeben.
Ich nehme an, damit ist die URL im ZMI gemeint. Wie kann ich
herausfinden, welches Objekt welche URL hat? Der einzige Anhaltspunkt
ist 0000000000000e29, aber das ist ja keine URL.
Dies ist der Traceback:
2007-07-06T14:04:24 INFO(0) ZODB Mounted database
'144249928_1063632369.960049' at /temp_folder
------
2007-07-06T14:04:25 ERROR(200) ZODB Couldn't load state for
'\x00\x00\x00\x00\x00\x00\x0e)'
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) Zope manage_beforeDelete() threw
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 309, in _delObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 85, in manage_beforeDelete
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 95, in unindex_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) ZODB Couldn't load state for
'\x00\x00\x00\x00\x00\x00\x0e)'
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) Zope Couldn't install Formulator
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 629, in install_product
(Object: Zope)
(Info: Formulator)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/__init__.py,
line 62, in initialize
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/FieldRegistry.py,
line 62, in registerFieldHelp
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/App/ProductContext.py,
line 257, in registerHelpTopic
File /usr/local/Zope-2.6.2-linux2-x86/Products/OrderedFolderSupportPatch/__init__.py,
line 70, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 272, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 79, in manage_afterAdd
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 92, in index_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 PANIC(300) z2 Startup exception
Traceback (innermost last):
File z2.py, line 585, in ?
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Zope/__init__.py,
line 46, in startup
(Object: startup)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Zope/App/startup.py,
line 92, in startup
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/CMFPlone/PloneInitialize.py,
line 42, in go
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 409, in initialize
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 567, in install_products
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 629, in install_product
(Object: Zope)
(Info: Formulator)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/__init__.py,
line 62, in initialize
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/FieldRegistry.py,
line 62, in registerFieldHelp
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/App/ProductContext.py,
line 257, in registerHelpTopic
File /usr/local/Zope-2.6.2-linux2-x86/Products/OrderedFolderSupportPatch/__init__.py,
line 70, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 272, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 79, in manage_afterAdd
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 92, in index_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
Du benutzt die "FileStorage" Utility "fsrefs", um Deinen Storage zu überprüfen.
Sie sollte die "Dangling Reference" (das ist ein POSKeyError im Prinzip)
ermitteln mit dem Objekt, das die Dangling Reference besitzt.
"fsrefs" wird die Objekte über ihre OID identifizieren.
Du benutzt die OID für den Container, in dem das verlorene Objekt liegt,
um den Container zu laden: "container=app._p_jar[oid_as_binarystring]".
Jetzt geht es nur noch darum, die Id des kaputten Objekts zu
bestimmen:
for i in container.__dict__.keys():
print i; dummy = getattr(container,i).getId()
Die letzte Ausgabe vor dem POSKeyError identifiziert das
fehlende Objekt.
Frage
Ich habe eine alte Instanz mit Zope 2.6.2 und einem POSKeyError.
Antwort
Die Anleitung unter http://www.zopelabs.com/cookbook/1054240694 würde
wohl funktionieren, wenn ich wüsste, wie ich das defekte Objekt
herausfinden könnte. Im Traceback kann ich die Info jedenfalls nicht
finden. Gemäss Anleitung muss ich unter Punkt die url_to_obj angeben.
Ich nehme an, damit ist die URL im ZMI gemeint. Wie kann ich
herausfinden, welches Objekt welche URL hat? Der einzige Anhaltspunkt
ist 0000000000000e29, aber das ist ja keine URL.
Dies ist der Traceback:
2007-07-06T14:04:24 INFO(0) ZODB Mounted database
'144249928_1063632369.960049' at /temp_folder
------
2007-07-06T14:04:25 ERROR(200) ZODB Couldn't load state for
'\x00\x00\x00\x00\x00\x00\x0e)'
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) Zope manage_beforeDelete() threw
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 309, in _delObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 85, in manage_beforeDelete
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 95, in unindex_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) ZODB Couldn't load state for
'\x00\x00\x00\x00\x00\x00\x0e)'
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 ERROR(200) Zope Couldn't install Formulator
Traceback (innermost last):
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 629, in install_product
(Object: Zope)
(Info: Formulator)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/__init__.py,
line 62, in initialize
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/FieldRegistry.py,
line 62, in registerFieldHelp
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/App/ProductContext.py,
line 257, in registerHelpTopic
File /usr/local/Zope-2.6.2-linux2-x86/Products/OrderedFolderSupportPatch/__init__.py,
line 70, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 272, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 79, in manage_afterAdd
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 92, in index_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
------
2007-07-06T14:04:25 PANIC(300) z2 Startup exception
Traceback (innermost last):
File z2.py, line 585, in ?
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Zope/__init__.py,
line 46, in startup
(Object: startup)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Zope/App/startup.py,
line 92, in startup
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/CMFPlone/PloneInitialize.py,
line 42, in go
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 409, in initialize
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 567, in install_products
(Object: Zope)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/Application.py,
line 629, in install_product
(Object: Zope)
(Info: Formulator)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/__init__.py,
line 62, in initialize
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/Products/Formulator/FieldRegistry.py,
line 62, in registerFieldHelp
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/App/ProductContext.py,
line 257, in registerHelpTopic
File /usr/local/Zope-2.6.2-linux2-x86/Products/OrderedFolderSupportPatch/__init__.py,
line 70, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/OFS/ObjectManager.py,
line 272, in _setObject
(Object: Help)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 79, in manage_afterAdd
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/HelpSys/HelpTopic.py,
line 92, in index_object
(Object: FileField)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/Connection.py,
line 551, in setstate
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 645, in load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
File /usr/local/Zope-2.6.2-linux2-x86/lib/python/ZODB/FileStorage.py,
line 619, in _load
(Object: /usr/local/Zope-2.6.2-linux2-x86/var/Data.fs)
POSKeyError: 0000000000000e29
Du benutzt die "FileStorage" Utility "fsrefs", um Deinen Storage zu überprüfen.
Sie sollte die "Dangling Reference" (das ist ein POSKeyError im Prinzip)
ermitteln mit dem Objekt, das die Dangling Reference besitzt.
"fsrefs" wird die Objekte über ihre OID identifizieren.
Du benutzt die OID für den Container, in dem das verlorene Objekt liegt,
um den Container zu laden: "container=app._p_jar[oid_as_binarystring]".
Jetzt geht es nur noch darum, die Id des kaputten Objekts zu
bestimmen:
for i in container.__dict__.keys():
print i; dummy = getattr(container,i).getId()
Die letzte Ausgabe vor dem POSKeyError identifiziert das
fehlende Objekt.