• Julien Muchembled's avatar
    Close connection in case of AssertionError while processing a packet · 17e5ac38
    Julien Muchembled authored
    This may help client to recover after an assertion failure.
    For example, this should fix the following bug:
    
    ERROR ZODB.Connection Couldn't load state for 0x13b6
    Traceback (most recent call last):
      File "ZODB/Connection.py", line 851, in setstate
        self._setstate(obj)
      File "ZODB/Connection.py", line 901, in _setstate
        p, serial = self._storage.load(obj._p_oid, '')
      File "neo/client/Storage.py", line 85, in load
        return self.app.load(oid)[:2]
      File "neo/client/app.py", line 435, in load
        result = self._loadFromStorage(oid, tid, before_tid)
      File "neo/client/app.py", line 450, in _loadFromStorage
        for node, conn in self.cp.iterateForObject(oid, readable=True):
      File "neo/client/pool.py", line 130, in iterateForObject
        conn = getConnForNode(node)
      File "neo/client/pool.py", line 155, in getConnForNode
        conn = self._initNodeConnection(node)
      File "neo/client/pool.py", line 61, in _initNodeConnection
        connector=app.connector_handler(), dispatcher=app.dispatcher)
      File "neo/lib/connection.py", line 749, in __init__
        super(MTClientConnection, self).__init__(*args, **kwargs)
      File "neo/lib/connection.py", line 685, in __init__
        node.setConnection(self)
      File "neo/lib/node.py", line 119, in setConnection
        attributeTracker.whoSet(self, '_connection')
    AssertionError
    17e5ac38
handler.py 6.54 KB