Skip to content
Snippets Groups Projects
  1. Apr 09, 2024
    • godzie44's avatar
      feature: plugins · 26b11774
      godzie44 authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Introduce a plugin system for picodata cluster.
      Plugin system contains:
      - `picoplugin` crate with plugin interfaces.
      This crate exposes plugin interfaces for user implementation and API
      that used by picodata to interact with plugin as with a code from dynamic library.
      - Support for plugin work cycle in picodata instance work cycle.
      Picodata instance interacts with running plugin by `PluginManager`
      component.
      Typically, plugins react to events that occur in instance or whole cluster.
      - New lua API with plugin CRUD actions.
          - pico.create_plugin - load a new plugin into picodata cluster
          - pico.remove_plugin - remove plugin from picodata cluster
          - pico.update_plugin_config - update plugin service configuration
      26b11774
    • Georgy Moshkin's avatar
  2. Mar 13, 2024
    • Yaroslav Dynnikov's avatar
      chore: unify codestyle in governor/plan.rs · 2e9a270e
      Yaroslav Dynnikov authored
      Here's the order of plan stages for memories:
      
      ```
      $ grep "return Ok" src/governor/plan.rs
      return Ok(ConfChange { conf_change }.into());
      return Ok(TransferLeadership { to: new_leader }.into());
      return Ok(Downgrade { req }.into());
      return Ok(CreateReplicaset { master_id, replicaset_id, rpc, op }.into());
      return Ok(UpdateTargetReplicasetMaster { op }.into());
      return Ok(Replication { targets, master_id, replicaset_peers, req }.into());
      return Ok(UpdateCurrentReplicasetMaster { old_master_id, demote, new_master_id, sync_and_promote, replicaset_id, op }.into());
      return Ok(ProposeReplicasetStateChanges { op }.into());
      return Ok(UpdateTargetVshardConfig { dml }.into());
      return Ok(UpdateCurrentVshardConfig { targets, rpc, dml }.into());
      return Ok(ShardingBoot { target, rpc, op }.into());
      return Ok(ToOnline { target, rpc, req }.into());
      return Ok(ApplySchemaChange { rpc, targets }.into());
      ```
      2e9a270e
  3. Jan 18, 2024
    • Georgy Moshkin's avatar
      refactor: simplify raft entry proposal · fed1102e
      Georgy Moshkin authored
      - remove logical clock from raft entry context, (term, index) is used
        for synchronization instead
      - this allows us to remove the Notify/Notifier boilerplate
      - NodeImpl::notifications -> NodeImpl::read_state_wakers
      - this and the recently refactored proc_join finally allows us to remove
        OpResult
      - ContextCoercion & CoercionError are also removed for the sake of
        simplification
      fed1102e
  4. Jan 15, 2024
  5. Dec 19, 2023
  6. Nov 21, 2023
  7. Nov 20, 2023
  8. Nov 14, 2023
  9. Nov 09, 2023
  10. Nov 06, 2023
    • Kurdakov Alexander's avatar
      feat: add tier entity · 701aa4ab
      Kurdakov Alexander authored
      Transferred replication factor from Properties table to new Tier table
      
      Instance and Replicaset belongs to tier via new field tier in _pico_instance and _pico_replicaset
      
      New cli option init-cfg with path to configuration file in yaml format. For now contains only info about tiers.
      701aa4ab
  11. Sep 19, 2023
  12. Sep 13, 2023
  13. Sep 05, 2023
  14. Aug 30, 2023
  15. Aug 18, 2023
  16. Aug 17, 2023
  17. Jul 19, 2023
  18. Jun 02, 2023
  19. Jun 01, 2023
  20. May 31, 2023
  21. May 26, 2023
  22. May 25, 2023
  23. May 24, 2023
  24. May 19, 2023
  25. May 15, 2023
  26. May 12, 2023
    • Georgy Moshkin's avatar
      fix: used to sync log to leader's commit which lags behind applied · 57f02c40
      Georgy Moshkin authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      This used to cause flakyness of test_bucket_rebalancing_respects_replication_factor
      like this:
      
      - governor proposes entry at index N with weight updates,
        and waits till it's applied
      
      - commit index is not updated yet, but governor calls rpc::sharding to
        update the weights in the vshard subsystem on instances and passes the
        lagging commit index for syncing
      
      - peers sync up to the lagging commit index and then reconfigure vshard
        to the outdated weights
      
      - governor thinks everything is in order and waits for updates
      
      - the test fails because buckets don't get rebalanced to the storages
        with weights set to 0
      57f02c40
  27. Mar 27, 2023
  28. Feb 01, 2023
  29. Jan 12, 2023
Loading