Skip to content
Snippets Groups Projects
  1. Jul 08, 2022
  2. Jul 07, 2022
  3. Jul 06, 2022
  4. Jul 05, 2022
  5. Jul 01, 2022
  6. Jun 30, 2022
  7. Jun 29, 2022
  8. Jun 27, 2022
  9. Jun 23, 2022
  10. Jun 20, 2022
  11. Jun 17, 2022
  12. Jun 01, 2022
    • Sergey V's avatar
      feat: --cluster-id parameter · f8ac1dbe
      Sergey V authored
      * Make `--cluster-id` CLI mandatory.
      * Handle cluster_id mismatch in raft_join.
        When an instance attempts to join the cluster and the instances's
        `--instance-id` parameter mismatches the cluster_id of the cluster
        an error is raised inside the raft_join handler.
      Unverified
      f8ac1dbe
  13. May 31, 2022
    • Georgy Moshkin's avatar
      fix(discovery): fix hanging if some peers don't respond · 4d3116b0
      Georgy Moshkin authored
      Previously the discovery algorithm would try to reach each known peer
      sequentially requiring each consequent request to succeed until the next
      one can be attempted. This would not work in some cases (see test in
      previous commit).
      
      So the new algorithm instead makes a single attempt to reach each peer
      within a round, and if some failed they're retried in the next round of
      requests. This allows overall discovery to succeed in cases when some
      of the initial peers never respond.
      
      Closes #54
      4d3116b0
  14. May 30, 2022
  15. May 23, 2022
  16. May 21, 2022
  17. May 20, 2022
  18. May 13, 2022
  19. May 12, 2022
    • Yaroslav Dynnikov's avatar
      feature: concurrent join requests handling · 9b079eae
      Yaroslav Dynnikov authored
      There were some problems with join requests synchronization. Raft
      forbids proposing a configuration change if there's another one
      uncommitted (see [1]). In that case, it replaces an `EntryConfChange`
      with an `EntryNormal`. It could happen at any time even without bugs in
      code due to the network partitioning, and its the repsonsibility of
      the picodata product to handle it properly.
      
      Earlier, there was no way to wait when raft leaves the joint state. It
      used to slow down cluster assembling and made it race-prone. The waiting
      for the cluster readiness is also important in tests. Some operations
      (the most important amongst them is leader switching) are impossible
      until instance finishes promotion to a voter. For instance, raft rejects
      `MsgTimeoutNow` unless the node is promotable (see [2]). It makes some
      testing scenarios flaky.
      
      This patch introduces new synchronization primitive - `JointStateLatch`.
      The latch is held on the leader and is locked upon
      `raw_node.propose_conf_change()`. It's unlocked only when the second
      (implicit) conf change that represents leaving joint state is committed.
      The latch also tracks the index of the corresponding `EntryConfChange`.
      Even if raft ignores it for any reason, the latch is still unlocked as
      soon as the committed index exceeds the one of the latch.
      
      [1] https://github.com/tikv/raft-rs/blob/v0.6.0/src/raft.rs#L2014-L2026
      [2] https://github.com/tikv/raft-rs/blob/v0.6.0/src/raft.rs#L2314
      
      Close https://git.picodata.io/picodata/picodata/picodata/-/issues/47
      Close https://git.picodata.io/picodata/picodata/picodata/-/issues/53
      Verified
      9b079eae
    • Yaroslav Dynnikov's avatar
      fix: pytest wait_ready implementation · 7b94717a
      Yaroslav Dynnikov authored
      Waiting for a valid `leader_id` on a node isn't enough. It may already
      have one, but still be a Learner. Instead, the fixture should wait until
      the node is promoted to voter.
      Verified
      7b94717a
  20. Apr 27, 2022
Loading