1. 08 Jul, 2014 1 commit
    • Julien Muchembled's avatar
      storage: fix memory leak in replication · a0bd2ae8
      Julien Muchembled authored
      The following 3 methods are renamed:
       unlockData -> releaseData
       storeData -> holdData
       _storeData -> storeData
      
      and StorageOperationHandler use the new storeData instead of the old one.
      a0bd2ae8
  2. 04 Jul, 2014 5 commits
  3. 26 Jun, 2014 1 commit
  4. 24 Jun, 2014 2 commits
  5. 20 Jun, 2014 3 commits
    • Julien Muchembled's avatar
      client: clean up import/export code · d562bf8f
      Julien Muchembled authored
      Export:
      - Remove leftover warning about a bug that was fixed in
        commit e76af297
      - In neomigrate script, open NEO storage read-only.
      - IStorageIteration is already implemented.
      
      Import:
      - Review comments.
      - In neomigrate script, warn that IStorageRestoreable is not implemented.
      - Do not call 'close' method on source iterator. BaseStorage does not do it and
        this is not part of ZODB API. In the case of FileStorage, resource are freed
        automatically during garbage collection.
      d562bf8f
    • Julien Muchembled's avatar
      Use several partitions in functional client tests · fcff26db
      Julien Muchembled authored
      This is more realistic than testing with a single partition, in particular when
      there are more storage nodes that copies.
      fcff26db
    • Julien Muchembled's avatar
      storage: more refactoring of backends · 1d11287f
      Julien Muchembled authored
      1d11287f
  6. 19 Jun, 2014 4 commits
    • Julien Muchembled's avatar
      client: in iterator records, export data serial as stored by NEO · e76af297
      Julien Muchembled authored
      There is simply no way to guess data serials and instead of producing random
      values, the only solution is to retrieve the values from storages.
      
      There are still differences for data serials between FileStorage and NEO:
      - NEO always resolves to original serial, to avoid any indirection
        (which slightly speeds up undo at the expense of a more complex pack code)
      - NEO does not make any difference between object deletion and creation undone
        (data serial always null in storage)
      It has to be decided whether NEO implementation should be changed about this.
      
      Apart from that, conversion database back from NEO should be fixed.
      testExportFileStorageBug passes and there was in fact no FileStorage bug.
      
      Another change is that iterator does not trash the client cache anymore.
      e76af297
    • Julien Muchembled's avatar
      client: simplify iterator · 441145e5
      Julien Muchembled authored
      441145e5
    • Julien Muchembled's avatar
      storage: refactoring & cleanup · bd03b14b
      Julien Muchembled authored
      - _[gs]etPackTID accessors implementation is not backend-specific
        so move them to superclass
      - _getObjectLength method is useless since data_tid always contains the wanted
        information, regardless the contents of value_tid column
      bd03b14b
    • Julien Muchembled's avatar
      storage: lazy import of backends · d63e45d3
      Julien Muchembled authored
      d63e45d3
  7. 05 Jun, 2014 1 commit
  8. 04 Jun, 2014 2 commits
    • Julien Muchembled's avatar
      Fix tests broken by API changes in new psutil 2.0.0 · 9fe34439
      Julien Muchembled authored
      This fixes:
      
      Traceback (most recent call last):
        File "neo/tests/functional/testMaster.py", line 50, in testStoppingSecondaryMaster
          self.neo.expectDead(master)
        File "neo/tests/functional/__init__.py", line 615, in expectDead
          self.expectCondition(callback, *args, **kw)
        File "neo/tests/functional/__init__.py", line 509, in expectCondition
          'History: %s' % opaque_history)
      AssertionError: Timeout while expecting condition. History: [False, False, False, False, False, False, False, False, False, False, False]
      9fe34439
    • Julien Muchembled's avatar
      fixup! client: drop support for ZODB < 3.10 · ffe34600
      Julien Muchembled authored
      See commit d9ab77b8
      ffe34600
  9. 03 Jun, 2014 3 commits
  10. 29 May, 2014 1 commit
  11. 08 Jan, 2014 1 commit
  12. 07 Jan, 2014 10 commits
  13. 04 Jan, 2014 3 commits
  14. 17 Dec, 2013 3 commits
    • Julien Muchembled's avatar
      7834ef10
    • 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
    • Julien Muchembled's avatar