1. 15 Jun, 2015 1 commit
  2. 09 Jun, 2015 1 commit
  3. 21 May, 2015 1 commit
  4. 03 Jun, 2014 1 commit
  5. 07 Jan, 2014 4 commits
    • Add test showing that clients may be stuck on an old snapshot in case of failure during tpc_finish · fd4cfaa9
      If anything wrong happens after a transaction is locked and before the end of
      onTransactionCommitted, recovery phase should be run again, so that the master
      gets correct last tid.
      
      Following patch by Vincent is an attempt to fix this:
      
      --- a/neo/master/app.py
      +++ b/neo/master/app.py
      @@ -329,8 +329,8 @@ def playPrimaryRole(self):
      
               # recover the cluster status at startup
               try:
      -            self.runManager(RecoveryManager)
                   while True:
      +                self.runManager(RecoveryManager)
                       self.runManager(VerificationManager)
                       try:
                           if self.backup_tid:
      @@ -338,10 +338,6 @@ def playPrimaryRole(self):
                                   raise RuntimeError("No upstream cluster to backup"
                                                      " defined in configuration")
                               self.backup_app.provideService()
      -                        # Reset connection with storages (and go through a
      -                        # recovery phase) when leaving backup mode in order
      -                        # to get correct last oid/tid.
      -                        self.runManager(RecoveryManager)
                               continue
                           self.provideService()
                       except OperationFailure:
      Julien Muchembled committed
    • Update copyright year · 9b05eff4
      Julien Muchembled committed
    • Fix race conditions in testClientReconnection · 3462d3c1
      This should following random errors:
      
      >   File "neo/lib/event.py", line 77, in unregister
      >     self.epoll.unregister(fd)
      > IOError: [Errno 2] No such file or directory
      
      >   File "neo/tests/threaded/test.py", line 670, in testClientReconnection
      >     c, = cluster.storage.nm.getClientList()
      > ValueError: need more than 0 values to unpack
      Julien Muchembled committed
    • client: add support for reconnection to master · edefaca7
      This implementation proper cache invalidation.
      
      Connection to master is also made optional to load from storage nodes, as long
      as partition table contains up-to-date data (which is anyway unlikely to change
      when there is no master).
      Julien Muchembled committed
  6. 04 Jan, 2014 1 commit
  7. 17 Dec, 2013 1 commit
  8. 20 Aug, 2012 1 commit
  9. 08 Aug, 2012 1 commit
  10. 01 Aug, 2012 1 commit
  11. 23 Jul, 2012 3 commits
  12. 19 Jul, 2012 2 commits
  13. 18 Jul, 2012 1 commit
  14. 13 Jul, 2012 1 commit
  15. 05 Jul, 2012 1 commit
  16. 19 Jun, 2012 1 commit
  17. 13 Mar, 2012 1 commit
  18. 24 Feb, 2012 1 commit
  19. 23 Jan, 2012 1 commit
  20. 13 Jan, 2012 1 commit
  21. 09 Jan, 2012 1 commit
  22. 06 Jan, 2012 1 commit
  23. 05 Jan, 2012 1 commit
  24. 20 Dec, 2011 1 commit
  25. 26 Oct, 2011 1 commit
  26. 11 Oct, 2011 2 commits
    • Fix protocol and DB schema so that storages can handle transactions of any size · d5c469be
      - 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
      Julien Muchembled committed
    • Allow NEO to store empty values · d90c5b83
      This changes how NEO stores undo information
      and how it is transmitted on the network.
      Julien Muchembled committed
  27. 29 Sep, 2011 1 commit
  28. 16 Sep, 2011 2 commits
  29. 08 Sep, 2011 2 commits
  30. 03 Sep, 2011 1 commit
  31. 24 Jun, 2011 1 commit
    • client: do not clear the entire connection cache in tpc_finish ! · b55075f7
      This fixes a regression introduced by implementation of IMVCCStorage in r2532.
      On recent ZODB, this fixes a severe performance issue.
      With ZODB 3.4, objects were never invalidated, which was even worse.
      
      This fixes includes compatibility code for ZODB 3.4 so that each connection
      has its own NEOStorage instance.
      The DB's storage is changed to always consider the last revision of
      objects.
      
      IMVCCStorage seems too complicated to me. Connection should be a better
      place to implement it (by extending/fixing the 'before' attribute).
      So we have decided that NEOStorage stops implementing IMVCCStorage.
      
      git-svn-id: https://svn.erp5.org/repos/neo/trunk@2802 71dcc9de-d417-0410-9af5-da40c76e7ee4
      Julien Muchembled committed