- Apr 09, 2024
-
-
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
-
Georgy Moshkin authored
-
- Mar 13, 2024
-
-
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()); ```
-
- Jan 18, 2024
-
-
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
-
- Jan 15, 2024
-
-
Use `std::ops::ControlFlow` instead
-
- Dec 19, 2023
-
-
-
-
This patch adds initiator field to most of the events. Initiator is added to members of Op enum which do not contain it already (e g owner in CreateUser serves as initiator). To me it is reasonable to remove as_user from CaS/ACL checks because it matches initiator. But I decided not to do this just yet. Additionally I've mande small cleanup to UserMetadata to avoid need for intermediate step in decoding when we first fetch tuple and then decode it into model struct. Close https://git.picodata.io/picodata/picodata/picodata/-/issues/433
-
- Nov 21, 2023
-
-
Georgy Moshkin authored
-
Georgy Moshkin authored
- Now we explicitly store the current & target vshard configuration in global storage
-
- Nov 20, 2023
-
-
Georgy Moshkin authored
-
- Nov 14, 2023
-
-
Georgy Moshkin authored
-
Georgy Moshkin authored
-
- Nov 09, 2023
-
-
Georgy Moshkin authored
-
- Nov 06, 2023
-
-
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.
-
- Sep 19, 2023
-
-
- Sep 13, 2023
-
-
Georgy Moshkin authored
-
- Sep 05, 2023
-
-
Georgy Moshkin authored
-
- Aug 30, 2023
-
-
- Aug 18, 2023
-
-
- Aug 17, 2023
-
-
- Jul 19, 2023
-
-
Egor Ivkov authored
-
- Jun 02, 2023
-
-
Georgy Moshkin authored
-
-
- Jun 01, 2023
-
-
Georgy Moshkin authored
-
- May 31, 2023
-
-
Georgy Moshkin authored
-
- May 26, 2023
-
-
Georgy Moshkin authored
Still ignore expelled ones though. Also this introduces yet another hardcoded timeout value, which should be unhardcoded at some point (related to #64).
-
-
- May 25, 2023
-
-
Georgy Moshkin authored
-
- May 24, 2023
-
-
They're being replaced with ddl create_space, etc.
-
- May 19, 2023
-
-
Yaroslav Dynnikov authored
-
- May 15, 2023
-
-
Georgy Moshkin authored
-
Georgy Moshkin authored
-
- May 12, 2023
-
-
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
-
- Mar 27, 2023
-
-
Егор Ивков authored
-
- Feb 01, 2023
-
-
- Jan 12, 2023
-
-
Yaroslav Dynnikov authored
Make it more alike `find_farthest`: ```rust sum_distance(all, voters, candidate); find_farthest(all, voters, candidates); ```
-
Yaroslav Dynnikov authored
1. Besides `raft_conf` local state introduce `promotable` set of instances that are suitable for promotion. 2. Remove an instance from `promotable` set when it's actually promoted.
-
Yaroslav Dynnikov authored
-