1. 17 Jan, 2012 2 commits
  2. 13 Jan, 2012 1 commit
  3. 06 Jan, 2012 1 commit
  4. 20 Dec, 2011 1 commit
  5. 09 Nov, 2011 1 commit
    • Vincent Pelletier's avatar
      Use python's epoll wrapper · 20964f4f
      Vincent Pelletier authored
      Custom ctypes wrapper for epoll is not needed with python 2.6+.
      Also, do not retry upon temporary error: it is valid to handle no packet,
      and retrying the poll call would increase overall timeout without easy fix.
      Also, remove meaningless frozensets (leftovers from an old bug's symptoms).
      20964f4f
  6. 26 Oct, 2011 2 commits
  7. 11 Oct, 2011 1 commit
    • Julien Muchembled's avatar
      Fix protocol and DB schema so that storages can handle transactions of any size · d5c469be
      Julien Muchembled authored
      - Change protocol to use SHA1 for all checksums:
        - Use SHA1 instead of CRC32 for data checksums.
        - Use SHA1 instead of MD5 for replication.
      
      - Change DatabaseManager API so that backends can store raw data separately from
        object metadata:
        - When processing AskStoreObject, call the backend to store the data
          immediately, instead of keeping it in RAM or in the temporary object table.
          Data is then referenced only by its checksum.
          Without such change, the storage could fail to store the transaction due to
          lack of RAM, or it could make tpc_finish step very slow.
        - Backends have to store data in a separate space, and remove entries as soon
          as they get unreferenced. So they must have an index of checksums in object
          metadata space. A new '_uncommitted_data' backend attribute keeps references
          of uncommitted data.
        - New methods: _pruneData, _storeData, storeData, unlockData
        - MySQL: change vertical partitioning of 'obj' by having data in a separate
          'data' table instead of using a shortened 'obj_short' table.
        - BTree: data is moved from '_obj' to a new '_data' btree.
      
      - Undo is optimized so that backpointers are not required anymore to fetch data:
        - The checksum of an object is None only when creation is undone.
        - Removed DatabaseManager methods: _getObjectData, _getDataTIDFromData
        - DatabaseManager: move some code from _getDataTID to findUndoTID so that
          _getDataTID only has what's specific to backend.
      
      - Removed because already covered by ZODB tests:
        - neo.tests.storage.testStorageDBTests.StorageDBTests.test__getDataTID
        - neo.tests.storage.testStorageDBTests.StorageDBTests.test__getDataTIDFromData
      d5c469be
  8. 29 Sep, 2011 2 commits
  9. 24 Sep, 2011 1 commit
    • Julien Muchembled's avatar
      tests: fix occasional deadlock when a threaded unit test ends · e96e8f0b
      Julien Muchembled authored
      During 'NEOCluster.stop', there's often 1 'Serialized.background()' call too
      many, and when it removed the last lock of the queue, another thread would hang
      if was sleeping between 'q.put(lock)' and 'q.get().release()'.
      
      An easy way to reproduce the bug was to add:
          if cls.pending is None:
              time.sleep(.01)
      just before 'q.get().release()'
      e96e8f0b
  10. 07 Sep, 2011 1 commit
  11. 05 Sep, 2011 3 commits
  12. 03 Sep, 2011 1 commit
  13. 16 Jun, 2011 1 commit
  14. 15 Jun, 2011 1 commit
  15. 14 Jun, 2011 1 commit
  16. 10 Jun, 2011 1 commit
    • Julien Muchembled's avatar
      Introduce light functional tests, using threads and serialized processing · 1ef149c2
      Julien Muchembled authored
      This allows to setup an almost fully functional cluster without additional
      processes. Threads are scheduled so that they never run simultaneously,
      eliminating most random.
      There's still much improvement possible like controlled randomization,
      or easier debugging when switching from one thread to another.
      
      As mock objects are not usable in such tests, an API should be implemented to
      trace/count any method call we'd like to check.
      
      This fixes test_notifyNodeInformation_checkUnregisterStorage
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2775 71dcc9de-d417-0410-9af5-da40c76e7ee4
      1ef149c2