Skip to content
Snippets Groups Projects
  1. Dec 19, 2024
    • Georgy Moshkin's avatar
      perf: introduce TopologyCache · 5bf9d8a5
      Georgy Moshkin authored
      TopologyCache is a collection of deserialized structures with
      information about cluster topology. This currently includes data from
      _pico_instance, _pico_replicaset, _pico_tier & _pico_service_route_table.
      The info is automatically kept up to date with the corresponding system
      tables. The TopologyCache also caches the immutable info related to the
      current instance, like instance name, replicaset uuid, etc.
      
      From now on we should be reading this data from TopologyCache whenever
      possible instead of going directly to system tables as we were doing
      previosly.
      
      At the moment only the plugin RPC module has transitioned to using
      TopologyCache but other modules should be refactored as well.
      Especially governor.
      5bf9d8a5
  2. Nov 30, 2024
  3. Nov 20, 2024
    • Georgy Moshkin's avatar
      feat: raft log auto compaction · 83b1d205
      Georgy Moshkin authored
      Add alter system cluster_wal_max_size and cluster_wal_max_count parameters
      which control the auto compaction of _raft_log system space based on
      the size in bytes and number of tuples respectively.
      83b1d205
  4. Oct 23, 2024
  5. Oct 22, 2024
  6. Oct 10, 2024
  7. Oct 01, 2024
    • Maksim Kaitmazian's avatar
      feat(sql): support IF EXIST and IF NOT EXISTS options · 1a553992
      Maksim Kaitmazian authored
      Note that after this merge request, we no longer validate whether the format
      of the created object matches with the schema. Consequently, we do not
      suppress errors if formats match anymore.
      
      Before:
      ```sql
      CREATE USER u WITH PASSWORD 'Passw0rd'
      1
      CREATE USER u WITH PASSWORD 'Passw0rd'
      0
      CREATE USER u WITH PASSWORD 'DifferentPassw0rd'
      error: user already exists with different auth method
      ```
      
      Now:
      ```sql
      CREATE USER u WITH PASSWORD 'Passw0rd'
      1
      CREATE USER u WITH PASSWORD 'Passw0rd'
      error: user u already exists
      CREATE USER u WITH PASSWORD 'DifferentPassw0rd'
      error: user u already exists
      CREATE USER IF NOT EXISTS u WITH PASSWORD 'DifferentPassw0rd'
      0
      ```
      1a553992
  8. Sep 27, 2024
  9. Sep 25, 2024
  10. Sep 16, 2024
  11. Sep 09, 2024
  12. Aug 30, 2024
  13. Aug 21, 2024
  14. Aug 20, 2024
  15. 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
  16. Aug 12, 2024
  17. Aug 08, 2024
  18. Aug 02, 2024
  19. Jul 25, 2024
  20. Jul 15, 2024
  21. 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
  22. Jun 26, 2024
  23. Jun 21, 2024
  24. Jun 19, 2024
  25. Jun 11, 2024
Loading