Skip to content
Snippets Groups Projects
  1. Jan 28, 2022
  2. Jan 26, 2022
    • Yaroslav Dynnikov's avatar
      chore: reorganize rust modules · 61ea1dfe
      Yaroslav Dynnikov authored
      For ambiguous concepts (such as Entry, Message) use prefix notation instead of suffixes.
      61ea1dfe
    • Yaroslav Dynnikov's avatar
      Incapsulate raw raft node · c2d6a43c
      Yaroslav Dynnikov authored
      This patch eliminates raw raft node dereferencing and redundant use of
      `borrow_mut()`.  Instead, `traft::Node` provides a safe API that
      communicates with the raw node through the fiber channel.
      
      Also, functions `node::new` and `node::start` are merged because keeping
      them distinct makes no sense.
      c2d6a43c
    • Yaroslav Dynnikov's avatar
      Refactor stash · f7de661b
      Yaroslav Dynnikov authored
      As we recently discovered, Tarantool has a peculiarity - when calling
      stored procedures with `{language = "C"}` option, it disregards the
      shared object (`.so` / `.dylib`) already loaded by Lua and makes the
      second independent `dlopen`. As a result, Lua and C stored procedures
      can't share state, because even static variables point to different
      memory locations.
      
      As a workaround, this patch provides the API for hiding the state inside
      `lua_State`. Under the hood, the stash consumes a custom struct and
      leaks the wrapping box. Inside Lua, it's represented by a userdata,
      which the `access()` function provides access to.
      f7de661b
    • Yaroslav Dynnikov's avatar
      chore: code duplication · 795208c1
      Yaroslav Dynnikov authored
      Use publicly available `tarantool::global_lua` instead of the self-made
      implementation.
      795208c1
  3. Jan 20, 2022
    • Sergey V's avatar
      refactor: traft Storage · caf78484
      Sergey V authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      caf78484
    • Yaroslav Dynnikov's avatar
      feature: run inner tests with cargo · 404f7851
      Yaroslav Dynnikov authored
      Tarantool specificities make it difficult to set up usual rust tests.
      Picolib is coupled with tarantool symbols and compiled as a dylib, so
      it can't be linked to a stand-alone binary.
      
      This patch introduces another way of testing.
      
      All tests (called inner) are already built into dylib and exposed in
      the tarantool console:
      
      ```
      tarantool> picolib.test
      ---
      - test_version: 'function: 0x41f32400'
        test_traft_storage_RaftEntryRow: 'function: 0x41f32550'
      ...
      ```
      
      The new integration test `inner.rs` iterates over them and runs each
      one in a separate tarantool instance.
      
      See also: commit 6610e5cb
      404f7851
    • Sergey V's avatar
      refactoring: move picolib::Message · aa3d29ad
      Sergey V authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Originally it was `picolib::traft::storage::Message`.
      Now it's simply `picolib::Message`.
      aa3d29ad
  4. Jan 19, 2022
  5. Jan 18, 2022
  6. Jan 17, 2022
  7. Dec 28, 2021
  8. Dec 24, 2021
  9. Dec 20, 2021
  10. Dec 14, 2021
  11. Dec 13, 2021
  12. Dec 07, 2021
  13. Dec 03, 2021
  14. Nov 29, 2021
  15. Nov 23, 2021
    • Yaroslav Dynnikov's avatar
      Parse command line arguments · 49eecfa1
      Yaroslav Dynnikov authored
      The control flow of picodata looks as following:
      
      Picodata binary -> exec tarantool -l picodata -> libpicodata.so -> ...
      
      Since the libpicodata is a shared lib loaded by tarantool, we can't pass
      it arguments as usual. At first, tarantool parses them by itself and
      rejects uknown arguments. Secondly, it spoils argv array.
      
      To overcome these two issues, this patch introduces argparse on behalf
      of the picodata binary, and puts parsed values into the environment
      variables.
      
      P.S. Thihs is how command line args look from within libpicodata:
      
      ```console
      $ tarantool -l picodata /dev/null --opt1 foo --opt2 bar
      Hello from rust lib
      arg[0] tarantool
      arg[1] /dev/null
      arg[2] --opt1
      arg[3] foo
      arg[4] --opt2
      arg[5] bar
      arg[6] --opt2
      arg[7] bar
      ```
      49eecfa1
    • Yaroslav Dynnikov's avatar
      Add picodata entrypoint · 9223e526
      Yaroslav Dynnikov authored
      This patch introduces the new cargo package - picodata.
      
      The package consists of two parts:
      - The `picodata` binary does some env magic and executes
        `tarantool -l picodata`.
      - The `libpicodata` dylib is the starting point for further
        development.
      9223e526
  16. Nov 22, 2021
Loading