Skip to content

plugin rpc sdk

Georgy Moshkin requested to merge gmoshkin/plugin-sdk-rpc into master

Summary

  1. feat: allow calling static picodata procs using .proc syntax

    Use "/path" RPC routes to call plugin-defined endpoints. Use ".proc" RPC routes to call builtin picodata endpoints (for example .proc_instance_info)

  2. feat: introduce picoplugin::transport::rpc module

    • 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)
  3. chore: add a internal_tests feature in picoplugin for unit tests

  4. test: set fiber name in internal tests

  5. refactor: make a ConnectionPool for plugins

  6. fixup extract stop_service

  7. feat: add plugin_name, service_name & service_version to PicoContext

  8. refactor: extract stop_service function

  9. feat: introduce picoplugin::util::FfiSafeStr for simple string passing over ffi

  10. fix: allow sending ?Sized types and receiving RawBytesBuf via ConnectionPool

  11. debug: table.keys & table.values utility functions

  12. chore: tweak traft::Error::NoSuchInstance

  13. feat: add _pico_replicaset_uuid index to _pico_replicaset table

  14. chore: clippy warning

  15. feat: introduce custom picodata specific error codes for BoxError


Edited by Georgy Moshkin

Merge request reports