An error occurred fetching the project authors.
  1. 15 Sep, 2015 1 commit
    • Julien Muchembled's avatar
      Rewrite of scheduler for threaded tests · 7025db52
      Julien Muchembled authored
      The previous implementation was built around a 'pending' global variable that
      was set by a few monkey-patches when some network activity was pending between
      nodes. All this is replaced by an extra epoll object is used to wait for nodes
      that have pending network events: this is simpler, and faster since it
      significantly reduces the number of context switches.
      7025db52
  2. 14 Sep, 2015 1 commit
  3. 28 Aug, 2015 3 commits
    • Julien Muchembled's avatar
      Fix random failure in testRecycledClientUUID · 79be7787
      Julien Muchembled authored
      Traceback (most recent call last):
        File "neo/tests/threaded/test.py", line 838, in testRecycledClientUUID
          x = client.load(ZERO_TID)
        [...]
        File "neo/tests/threaded/test.py", line 822, in notReady
          m2s.remove(delayNotifyInformation)
        File "neo/tests/threaded/__init__.py", line 482, in remove
          del self.filter_dict[filter]
      KeyError: <function delayNotifyInformation at 0x7f511063a578>
      79be7787
    • Julien Muchembled's avatar
      Fix several random failures in tests that didn't wait for transaction to be unlocked · c4ac45a8
      Julien Muchembled authored
      NEOCluster.tic() gets a new 'slave' parameter that must be True when a client
      node is in 'master' mode (i.e. setPoll(True)). In this case, tic() will wait
      that all nodes finish their work and the client polls with a non-zero timeout.
      
      Here, tic(slave=1) is used to wait for the storage to process
      NotifyUnlockInformation notification from the master.
      
      Traceback (most recent call last):
        File "neo/tests/threaded/test.py", line 80, in testBasicStore
          self.assertEqual(data_info, cluster.storage.getDataLockInfo())
        File "neo/tests/__init__.py", line 170, in assertEqual
          return super(NeoTestBase, self).assertEqual(first, second, msg=msg)
      failureException: {('\x0b\xee\xc7\xb5\xea?\x0f\xdb\xc9]\r\xd4\x7f<[\xc2u\xda\x8a3', 0): 0} != {('\x0b\xee\xc7\xb5\xea?\x0f\xdb\xc9]\r\xd4\x7f<[\xc2u\xda\x8a3', 0): 1}
      c4ac45a8
    • Julien Muchembled's avatar
      Fix occasional deadlocks in threaded tests · 0b93b1fb
      Julien Muchembled authored
      deadlocks mainly happened while stopping a cluster, hence the complete review
      of NEOCluster.stop()
      
      A major change is to make the client node handle its lock like other nodes
      (i.e. in the polling thread itself) to better know when to call
      Serialized.background() (there was a race condition with the test of
      'self.poll_thread.isAlive()' in ClientApplication.close).
      0b93b1fb
  4. 14 Aug, 2015 1 commit
    • Julien Muchembled's avatar
      Do not reconnect too quickly to a node after an error · d898a83d
      Julien Muchembled authored
      For example, a backup storage node that was rejected because the upstream
      cluster was not ready could reconnect in loop without delay, using 100% CPU
      and flooding logs.
      
      A new 'setReconnectionNoDelay' method on Connection can be used for cases where
      it's legitimate to quickly reconnect.
      
      With this new delayed reconnection, it's possible to remove the remaining
      time.sleep().
      d898a83d
  5. 12 Aug, 2015 5 commits
  6. 30 Jun, 2015 1 commit
  7. 23 Jun, 2015 1 commit
  8. 15 Jun, 2015 1 commit
  9. 09 Jun, 2015 1 commit
  10. 21 May, 2015 1 commit
  11. 30 Jul, 2014 1 commit
  12. 04 Jul, 2014 1 commit
  13. 03 Jun, 2014 1 commit
  14. 07 Jan, 2014 1 commit
  15. 26 Aug, 2012 1 commit
  16. 20 Aug, 2012 2 commits
  17. 10 Aug, 2012 1 commit
  18. 08 Aug, 2012 1 commit
  19. 23 Jul, 2012 1 commit
  20. 18 Jul, 2012 1 commit
  21. 13 Jul, 2012 1 commit
  22. 05 Jul, 2012 1 commit
  23. 26 Mar, 2012 2 commits
  24. 22 Mar, 2012 1 commit
  25. 21 Mar, 2012 1 commit
  26. 20 Mar, 2012 2 commits
    • Julien Muchembled's avatar
      neo.lib.logging.* -> logging.* · 5743cdce
      Julien Muchembled authored
      5743cdce
    • Julien Muchembled's avatar
      Review logging to keep all debugging information in RAM and flush only if useful · 1fce5cc4
      Julien Muchembled authored
      The main goal of this patch is to keep all DEBUG logs and packet logger enabled
      without exploding disk usage.
      This is done by keeping the last 16 MB (by default) of debugging information in
      a RAM buffer, and to emit it to an SQLite DB upon RTMIN signal or in case of
      warning and more severe log.
      
      Implementation is also cleaned up for better integration within a framework
      or if run standalone. NEO logger is now a direct child of root handler.
      Only warnings and more severe logs are forwarded to root handler.
      
      A new script 'neolog' is added to pretty-print the contents of the SQLite log.
      
      In unit tests, logging events are not buffered but emitted immediately.
      When a test passes, payloads of all exchanged packets are discarded to reduce
      disk usage on test bots.
      
      This slows down performance tests by about 15 % because even if nothing is
      written to disk, debug and packet log records are now always rendered.
      1fce5cc4
  27. 14 Mar, 2012 1 commit
  28. 13 Mar, 2012 1 commit
  29. 12 Mar, 2012 1 commit
    • Julien Muchembled's avatar
      New feature to check that partitions are replicated properly · 04f72a4c
      Julien Muchembled authored
      This includes an API change of Node.isIdentified, which now tells whether
      identification packets have been exchanged or not.
      All handlers must be updated to implement '_acceptIdentification' instead of
      overriding EventHandler.acceptIdentification: this patch only does it for
      StorageOperationHandler
      04f72a4c
  30. 24 Feb, 2012 1 commit
    • Julien Muchembled's avatar
      Implements backup using specialised storage nodes and relying on replication · 8e3c7b01
      Julien Muchembled authored
      Replication is also fully reimplemented:
      - It is not done anymore on whole partitions.
      - It runs at lowest priority not to degrades performance for client nodes.
      
      Schema of MySQL table is changed to optimize storage layout: rows are now
      grouped by age, for good partial replication performance.
      This certainly also speeds up simple loads/stores.
      8e3c7b01
  31. 22 Feb, 2012 1 commit