[ZCM] [ZC] 1878/ 3 Comment "broken ZEO cache not caught"

Collector: Zope Bugs, Features, and Patches ... zope-coders-admin at zope.org
Thu Sep 8 09:31:32 EDT 2005


Issue #1878 Update (Comment) "broken ZEO cache not caught"
 Status Rejected, Database/bug medium
To followup, visit:
  http://www.zope.org/Collectors/Zope/1878

==============================================================
= Comment - Entry #3 by alzhimer on Sep 8, 2005 9:31 am

just as an info: that is not what happens here. we've seen these corruption problems without having touched neither the ZEO server nor the cache files (no restoring of a Data.fs either). it _might_ have been caused by an blank except in an long running data import job that runs every night (the blank except has gone now, and so far no corruption was seen for some days).

beside that, I feel it's a good thing if software helps you out on human errors if possible :-)
________________________________________
= Reject - Entry #2 by efge on Sep 8, 2005 9:09 am

 Status: Pending => Rejected

If you have a persistent ZEO cache that gets corrupted, it a human error problem (typically a Data.fs restored from backup without clearing the caches).

It's not Zope's job to fix human errors.

________________________________________
= Request - Entry #1 by alzhimer on Aug 25, 2005 11:10 am

no idea why it happens, but once in a while we see that a zeo client has problems with its cache due to corrupted records. traceback looks like this:

2005-08-25T00:34:15 ERROR Zope.ZODBMountPoint Failed to mount database. exceptions.ValueError (corrupted record, oid)
Traceback (most recent call last):
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/Products/ZODBMountPoint/Mount.py", line 94, in _getOrOpenObject
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/Products/ZODBMountPoint/Mount.py", line 78, in _getMountedConnection
  File "/mnt/zope/ZSoftwareHome/lib/python/Products/ZODBMountPoint/MountedObject.py", line 142, in _getDB
    return getConfiguration().getDatabase(self._path)
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/DBTab/DBTab.py", line 96, in getDatabase
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/DBTab/DBTab.py", line 113, in _createDatabase
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/Zope2/Startup/datatypes.py", line 163, in open
    DB = self.createDB()
  File "/mnt/zope/2.8/ZSoftwareHome/lib/python/Zope2/Startup/datatypes.py", line 160, in createDB
    return ZODBDatabase.open(self)
  File "/mnt/zope/ZSoftwareHome/lib/python/ZODB/config.py", line 97, in open
    storage = section.storage.open()
  File "/mnt/zope/ZSoftwareHome/lib/python/ZODB/config.py", line 156, in open
    realm=self.config.realm)
  File "/mnt/zope/ZSoftwareHome/lib/python/ZEO/ClientStorage.py", line 314, in __init__
    self._cache.open()
  File "/mnt/zope/ZSoftwareHome/lib/python/ZEO/cache.py", line 112, in open
    self.fc.scan(self.install)
  File "/mnt/zope/ZSoftwareHome/lib/python/ZEO/cache.py", line 835, in scan
    install(self.f, ent)
  File "/mnt/zope/ZSoftwareHome/lib/python/ZEO/cache.py", line 121, in install
    o = Object.fromFile(f, ent.key, skip_data=True)
  File "/mnt/zope/ZSoftwareHome/lib/python/ZEO/cache.py", line 630, in fromFile
    raise ValueError("corrupted record, oid")
ValueError: corrupted record, oid

to "correct" such a situation, we simply delete the cache file in question (no need to stop the zope server); ZEO.cache recognizes this and creates a new cache file. now, wouldn't it be nice that would happen automatically? :-)
==============================================================



More information about the Zope-Collector-Monitor mailing list