Skip to content
Snippets Groups Projects
  1. Aug 21, 2024
  2. Aug 20, 2024
  3. Aug 14, 2024
    • Dmitry Rodionov's avatar
      refactor: split reenterable_schema_change_request · a6dc7e99
      Dmitry Rodionov authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Previously function was ~700 loc. The patch splits out the logic of
      conversion from ir node to operation. Previously there were two stages,
      initial validation that constructed intermediate structure and then
      intermediate structure was transformed into Op potentially several times
      in case of retries. The patch removes intermediate conversion by
      direct mapping from ir node to op. It makes reading more convenient
      since there is no need to jump back and forth between initial checks and
      actual Op construction. Another benefit is that some checks need to be
      repeated on each retry since retries originate from conflicts and
      conflicts change system state. So in newer state operation may no longer
      make sense. By coupling both operations together there is no way a check
      can be missed in the retry phase.
      
      We still do some cloning here and there. We can probably improve on that
      by constructing Op once and then adjusting it in place for conflicts but
      since retries should be rare in practice it shouldnt be a problem.
      
      Additionally we do a lot of conversion between SmolStr and String. We
      need to use SmolStr in more placese inside picodata so we dont need to
      do that.
      a6dc7e99
  4. Aug 12, 2024
  5. Aug 08, 2024
  6. Aug 02, 2024
  7. Jul 25, 2024
  8. Jul 15, 2024
  9. Jul 04, 2024
    • Georgy Moshkin's avatar
      feat: introduce picoplugin::transport::rpc module · cb7e0a05
      Georgy Moshkin authored
      - use RouteBuilder to register rpc endpoints (input and ouptut is raw
        bytes for now)
      - use RequestBuilder to send RPC requests to other instances which are
        running a specified plugin.service (guarded by version)
          - supported routing by
              - explicit instance_id
              - replicaset_id
              - bucket_id
              - any available instance with given service
      - use context::Context to extract information about request or add
        custom fields at runtime (middleware not yet implemented)
      cb7e0a05
  10. Jun 26, 2024
  11. Jun 21, 2024
  12. Jun 19, 2024
  13. Jun 11, 2024
  14. Jun 03, 2024
  15. May 29, 2024
  16. May 22, 2024
    • godzie44's avatar
      chore(plugins): plugin system improvements · 664f32d8
      godzie44 authored and Georgy Moshkin's avatar Georgy Moshkin committed
      - add description field to `_pico_plugin` and `_pico_service`
      - plugin loading: filter files by its extensions
      - plugin loading: check possible service collisions
      - plugin loading: now plugin searching at {plugin_dir}/{plugin_name} path
      - now all errors between plugin and picodata wrapping with `BoxError` (this protects plugin caller from UAF)
      664f32d8
  17. May 21, 2024
  18. 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
  19. Apr 12, 2024
  20. Apr 10, 2024
  21. 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
  22. Apr 08, 2024
  23. Apr 03, 2024
  24. Mar 18, 2024
  25. Mar 12, 2024
  26. Mar 07, 2024
    • Arseniy Volynets's avatar
      feat: support grant revoke procedure from sql · df8eb430
      Arseniy Volynets authored
      - Update sbroad submodule to commit with
      grant/revoke procedure support
      - Use existing mechanisms for grant/revoke
      ACL opcodes for grant/revoke procedure
      implementation
      - Add integration tests
      - Valid combinations:
      
      all procedures: grant/revoke create/execute/drop
      specific procedure: grant/revoke execute/drop
      
      - Syntax:
      
      grant create procedure to alice option(timeout=3)
      grant execute procedure on "spam"(int) to "alex"
      grant drop procedure on foo to bob
      revoke drop procedure on foo from bob
      df8eb430
  27. Mar 04, 2024
    • Arseniy Volynets's avatar
      feat: support rename procedure from sql · dd17afb3
      Arseniy Volynets authored
      - add new ddl opcode for renaming procedure
      - update sbroad submodule to get sql support
      - syntax:
      
      alter procedure "foo" rename to "bar" option(timeout=3)
      alter procedure "foo"(int, int) rename to "bar"
      dd17afb3
  28. Feb 22, 2024
Loading