Skip to content
Snippets Groups Projects
  1. Jul 05, 2022
  2. Jul 01, 2022
  3. Jun 30, 2022
  4. Jun 27, 2022
  5. Jun 23, 2022
  6. Jun 17, 2022
  7. Jun 15, 2022
  8. Jun 06, 2022
  9. Jun 03, 2022
  10. Jun 02, 2022
  11. Jun 01, 2022
    • Yaroslav Dynnikov's avatar
      test: restart instances · 0c5b947f
      Yaroslav Dynnikov authored
      Restarting both instances doesn't work yet, to be fixed later.
      
      Close https://git.picodata.io/picodata/picodata/picodata/-/issues/90
      0c5b947f
    • Yaroslav Dynnikov's avatar
      fix: pytest raft_status assertion message · 4250a0c8
      Yaroslav Dynnikov authored
      Since commit d87dd4ca `leader_id` became an `Option`, so the `None`
      value isn't rendered in the `picolib.raft_status` response:
      
      ```python
      status={'is_ready': False, 'raft_state': 'Follower', 'id': 1}
      ```
      
      It makes pytest complain about missing argument:
      
      ```
      cluster2 = Cluster("127.0.0.1:3300", n=2)
      
          def test_restart_leader(cluster2: Cluster):
              i1, i2 = cluster2.instances
              i1.assert_raft_status('Leader')
              i2.assert_raft_status('Follower')
      
              i1.restart()
      >       i1.wait_ready()
      
      test/int/test_joining.py:209:
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      ../../.local/share/virtualenvs/picodata-6sv6l6y-/lib/python3.10/site-packages/funcy/decorators.py:45:
      in wrapper
          return deco(call, *dargs, **dkwargs)
      ../../.local/share/virtualenvs/picodata-6sv6l6y-/lib/python3.10/site-packages/funcy/flow.py:127:
      in retry
          return call()
      ../../.local/share/virtualenvs/picodata-6sv6l6y-/lib/python3.10/site-packages/funcy/decorators.py:66:
      in __call__
          return self._func(*self._args, **self._kwargs)
      test/int/conftest.py:305: in wait_ready
          status = self._raft_status()
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
      
      self = Instance(i1, listen=127.0.0.1:3301)
      
          def _raft_status(self) -> RaftStatus:
              status = self.call("picolib.raft_status")
              assert isinstance(status, dict)
              eprint(f"{status=}")
      >       return RaftStatus(**status)
      E       TypeError: RaftStatus.__init__() missing 1 required positional
      argument: 'leader_id'
      
      test/int/conftest.py:280: TypeError
      ```
      
      This patch fixes the failure message:
      
      ```
      self = Instance(i1, listen=127.0.0.1:3301)
      
          @funcy.retry(tries=20, timeout=0.1)
          def wait_ready(self):
              status = self._raft_status()
      >       assert status.is_ready
      E       AssertionError: assert False
      E        +  where False = RaftStatus(id=1, raft_state='Follower',
      is_ready=False, leader_id=None).is_ready
      
      test/int/conftest.py:306: AssertionError
      ```
      4250a0c8
    • 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.
      f8ac1dbe
    • Sergey V's avatar
      39ef4e09
  12. May 31, 2022
  13. May 30, 2022
  14. May 26, 2022
  15. May 25, 2022
  16. May 24, 2022
  17. May 23, 2022
    • Yaroslav Dynnikov's avatar
      fix: test running on macos · 46eaf810
      Yaroslav Dynnikov authored
      Pytest supports running tests in parallel using the `xdist` plugin. In
      order to support it in Picodata, one should avoid ports collision. It
      assigns each worker a dedicated IP address `127.7.n.1`, where
      `n = xdist_worker_number`. Unfortunately, it doesn't work on MacOS,
      because Mac doesn't provide any loopback aliases except `127.0.0.1`
      by default.
      
      This patch provides another address generation logics. The `subnet`
      parameter is superseeded with a `base_port`, that is `3300 + n * 100`.
      In this way, every pytest (xdist) worker gets a dedicated port range
      `[3301, 3399]`, `[3401, 3499]` and so on.
      
      Close https://git.picodata.io/picodata/picodata/picodata/-/issues/65
      46eaf810
    • Yaroslav Dynnikov's avatar
      bug: uuid mismatch on bootstrap leader · b2b1b293
      Yaroslav Dynnikov authored
      When bootstrapping an instance, there're two possible execution paths -
      `start_boot` and `start_join`. While `start_join` takes all uuids from
      JoinResponse, `start_boot` already deals with a bootstrapped `box.cfg`
      (it's done in `start_discover`, refer to [1]). In order to make uuids
      consistent across `box.cfg` and topology module, `start_boot` stage is
      preceded with rebootstrap.
      
      This case is also covered with a pytest.
      
      - [1] doc/clustering.md
      b2b1b293
    • Yaroslav Dynnikov's avatar
  18. May 20, 2022
  19. May 17, 2022
  20. May 13, 2022
  21. May 12, 2022
Loading