Skip to content
Snippets Groups Projects
  1. May 17, 2024
  2. May 03, 2024
    • godzie44's avatar
      feature: plugin topology · bb59a877
      godzie44 authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Plugin topology is a mapping plugin service to tiers.
      
      Introduce new `pico.update_plugin_tiers` API.
      This function may be used for control
      where plugin services must be running and where not.
      
      Plugin integration tests have also been refactored.
      bb59a877
  3. Apr 24, 2024
    • godzie44's avatar
      feature: two-step plugin installing and removing · 6a39a360
      godzie44 authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Now for installation and enable plugin, there are two steps instead of one
      (`pico.load_plugin` previously).
      1. Install plugin (`pico.install_plugin`):
      validate plugin, create system tables.
      2. Enable plugin (`pico.enable_plugin`):
      loads plugin into instances memory, call `on_start` callback.
      
      Same for a plugin removing process (`pico.remove_plugin` previously):
      1. Disable plugin (`pico.disable_plugin`): call `on_stop` callbacks, drop
      plugin from instances.
      2. Remove plugin (`pico.remove_plugin`):
      remove plugin meta from system tables.
      6a39a360
  4. 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
  5. 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
  6. 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
  7. Jan 15, 2024
  8. Dec 19, 2023
  9. Nov 21, 2023
  10. Nov 20, 2023
  11. Nov 14, 2023
  12. Nov 09, 2023
  13. 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
  14. Sep 19, 2023
  15. Sep 13, 2023
  16. Sep 05, 2023
  17. Aug 30, 2023
  18. Aug 18, 2023
  19. Aug 17, 2023
  20. Jul 19, 2023
  21. Jun 02, 2023
  22. Jun 01, 2023
  23. May 31, 2023
  24. May 26, 2023
  25. May 25, 2023
  26. May 24, 2023
  27. May 19, 2023
  28. May 15, 2023
  29. 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
  30. Mar 27, 2023
  31. Feb 01, 2023
Loading