An error occurred fetching the project authors.
  1. 27 Nov, 2016 4 commits
    • Julien Muchembled's avatar
      Fix identification issues, including a race condition causing id conflicts · 9385706f
      Julien Muchembled authored
      The added test describes how the new id timestamps fix the race condition.
      These timestamps could be any unique opaque values, and the protocol is
      extended to exchange them along with node ids.
      
      Internally, nodes also reuse timestamps as a marker to identify the first
      NotifyNodeInformation packets from the master: since this packet is a complete
      list of nodes in the cluster, any other node in the node manager has left the
      cluster definitely and is removed.
      
      The secondary masters didn't receive update about master nodes.
      It's also useless to send them information about non-master nodes.
      9385706f
    • Julien Muchembled's avatar
      lib.node: fix NodeManager accessors returning identified nodes · e7cccf01
      Julien Muchembled authored
      Listing connected/connecting nodes with a UUID is used:
      - in one place by storage nodes: here, it does not matter if we skip nodes that
        aren't really identified
      - in many places by the master, only for server connections, in which case we
        have equivalence with real identification
      
      So in practice, NodeManager is only simplified to reuse the 'identified'
      property of nodes.
      e7cccf01
    • Julien Muchembled's avatar
      lib.node: code refactoring · 5941b27d
      Julien Muchembled authored
      5941b27d
    • Julien Muchembled's avatar
      Fix spelling mistakes · 6e32ebb7
      Julien Muchembled authored
      6e32ebb7
  2. 27 Jul, 2016 1 commit
    • Julien Muchembled's avatar
      client: fix conflict of node id by never reading from storage without being connected to the master · 11d83ad9
      Julien Muchembled authored
      Client nodes ignored the state of the connection to the master node when reading
      data from storage, as long as their partition tables were recent enough. This
      way, they were able to finish read-only transactions even if they could't reach
      the master, which could be useful for high availability. The downside is that
      the master node ignored that their node ids were still used, which causes "uuid"
      conflicts when reallocating them.
      
      Rejected solutions:
      - An unused NEO Storage should not insist in staying connected to master node.
      - Reverting to big random node identifiers is a lot of work and it would make
        debugging annoying (see commit 23fad3af).
      - Always increasing node ids could have been a simple solution if we accepted
        that the cluster dies after that all 2^24 possible ids were allocated.
      
      Given that reading from storage without being connected to the master can only
      be useful to finish the current transaction (because we always ping the master
      at the beginning of every transaction), keeping such feature is not worth the
      effort.
      
      This commit fixes id conflicts in a very simple way, by clearing the partition
      table upon primary node failure, which forces reconnection to the master before
      querying any storage node. In such case, we raise a special exception that will
      cause the transaction to be restarted, so that the user does not get errors for
      temporary connection failures.
      11d83ad9
  3. 25 Jan, 2016 1 commit
  4. 15 Sep, 2015 1 commit
  5. 24 Jun, 2015 1 commit
  6. 21 May, 2015 1 commit
  7. 07 Jan, 2014 1 commit
  8. 24 Jul, 2012 1 commit
  9. 13 Jul, 2012 1 commit
  10. 21 Mar, 2012 1 commit
  11. 20 Mar, 2012 1 commit
  12. 13 Mar, 2012 1 commit
  13. 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
  14. 01 Mar, 2012 1 commit
  15. 14 Feb, 2012 1 commit
  16. 20 Jan, 2012 1 commit
  17. 19 Jan, 2012 2 commits
  18. 13 Jan, 2012 3 commits
  19. 09 Jan, 2012 1 commit
  20. 06 Jan, 2012 1 commit
  21. 02 Jan, 2012 2 commits
  22. 26 Oct, 2011 1 commit
  23. 05 Sep, 2011 1 commit
  24. 07 Apr, 2011 1 commit
  25. 17 Jan, 2011 1 commit
  26. 29 Oct, 2010 1 commit
  27. 09 Jun, 2010 1 commit
  28. 07 Jun, 2010 1 commit
  29. 24 May, 2010 1 commit
  30. 15 May, 2010 1 commit
  31. 07 May, 2010 1 commit
  32. 06 May, 2010 1 commit
  33. 05 May, 2010 1 commit