[ZODB-Dev] problem with broken

Adam GROSZER agroszer at gmail.com
Wed Nov 5 04:49:10 EST 2008


Hello,

I'm having a problem with broken objects here.
It's coming when I'm trying to evolve generations and the generation
just touches all objects in the ZODB to store them again with the
non-deprecated classes.

The code is like this:
    storage = context.connection._storage

    next_oid = None
    n = 0
    while True:
        oid, tid, data, next_oid = storage.record_iternext(next_oid)

        obj = context.connection.get(oid)
        # Make sure that we tell all objects that they have been changed. Who
        # cares whether it is true! :-)
        obj._p_activate()
        obj._p_changed = True
        
        if next_oid is None:
            break


2008-11-04T19:40:16 ERROR SiteError http://localhost:8080/++etc++process/@@generations.html
Traceback (most recent call last):
  File "F:\W\Zope3\src\zope\publisher\publish.py", line 133, in publish
    result = publication.callObject(request, obj)
...
  File "F:\W\Zope3\src\zope\tal\talinterpreter.py", line 343, in interpret
    handlers[opcode](self, args)
  File "F:\W\Zope3\src\zope\tal\talinterpreter.py", line 583, in do_setLocal_tal
    self.engine.setLocal(name, self.engine.evaluateValue(expr))
  File "F:\W\Zope3\src\zope\tales\tales.py", line 696, in evaluate
    return expression(self)
  File "F:\W\Zope3\src\zope\tales\expressions.py", line 217, in __call__
    return self._eval(econtext)
  File "F:\W\Zope3\src\zope\tales\expressions.py", line 211, in _eval
    return ob()
  File "F:\W\Zope3\src\zope\app\generations\browser\managers.py", line 182, in evolve
    transaction.commit()
  File "F:\W\Zope3\src\transaction\_manager.py", line 93, in commit
    return self.get().commit()
  File "F:\W\Zope3\src\transaction\_transaction.py", line 322, in commit
    self._commitResources()
  File "F:\W\Zope3\src\transaction\_transaction.py", line 416, in _commitResources
    rm.commit(self)
  File "F:\W\Zope3\src\ZODB\Connection.py", line 541, in commit
    self._commit(transaction)
  File "F:\W\Zope3\src\ZODB\Connection.py", line 586, in _commit
    self._store_objects(ObjectWriter(obj), transaction)
  File "F:\W\Zope3\src\ZODB\Connection.py", line 620, in _store_objects
    p = writer.serialize(obj)  # This calls __getstate__ of obj
  File "F:\W\Zope3\src\ZODB\serialize.py", line 405, in serialize
    meta = klass, newargs()
  File "F:\W\Zope3\src\ZODB\broken.py", line 325, in __getnewargs__
    return self.__Broken_newargs__
AttributeError: 'VocabularyManager' object has no attribute '__Broken_newargs__'


-- 
Best regards,
 Adam GROSZER                          mailto:agroszer at gmail.com
--
Quote of the day:
A grateful thought toward heaven is of itself a prayer. 
- Gotthold Ephraim Lessing 



More information about the ZODB-Dev mailing list