Skip to content
Snippets Groups Projects
  1. Apr 26, 2022
  2. Apr 18, 2022
    • Yaroslav Dynnikov's avatar
      Fix macos build · af4a2db7
      Yaroslav Dynnikov authored
      Remove prctl dependency that is not available on mac.
      Verified
      af4a2db7
    • Yaroslav Dynnikov's avatar
      Squash the huge patch · 10b6eb1c
      Yaroslav Dynnikov authored
      feat: raft peer discovery PoC
      
      chore: prevent C functions from being optimized out
      
      feat: improve peer discovery
      
      fix: fix tests after making instance_id arg mandatory
      
      Smart supevision with fork
      
      Make it work
      
      Under development
      
      IPC messages to supervisor
      
      One more little step: entrypoint enum
      
      Arrange IPC from child to supervisor
      
      Remove tarantool_main macro
      
      Persist snapshot
      
      Fix some fresh bugs
      
      Implement postjoin
      
      Discovery under refactoring
      
      Enhance discovery
      
      Working on discovery
      
      Fix all discovery bugs known so far
      
      Draft join algorithm
      
      Fail applying snapshot
      
      Joining a learner works
      
      Cleanup snapshot generation
      
      Reorganize traft code and call join automatically
      
      Change peer.commit_index type from option to u64
      
      Implement autopromotion to voter
      
      Implement read_index
      
      Take read_index before self-romotion
      
      Cleanup excess logs
      
      Cleanup logs and code
      
      Deep refactoring in progress
      
      Finish refactoring db schema
      
      Embed entries applying inside traft node
      
      Refactor raft node communication
      
      Replace fiber channel with a mailbox, which is a `Vec<_>` + fiber cond.
      It allows to batch raft commands in a more predictable way and makes
      the code less error-prone.
      
      Remove commented code
      
      Simplify raft nodes interaction over net_box
      
      Eliminate `traft::Message` struct because its internals aren't used.
      Instead, serialize `raft::Message` using protobuf.
      
      Batch ConnectionPool requests
      
      1. Send messages in batches.
      2. Allow changing connection uri.
      3. Close unused connections after `inactivity_timeout`.
      
      Enhance the raft node
      
      1. Collect results from raft node
      2. Fix initial bootstrap which used to fail due to fiber race.
      3. Wrap raft storage operations in a transaction.
      
      Bump tarantool module
      
      Add documentation draft
      
      Cleanup warnings
      
      Try fixing tests
      
      Fix test_storage_log
      
      Fix test_traft_pool
      
      Fix luatest single and couple
      
      Start fixing threesome test
      
      Implement concurrent join requests handling
      Verified
      10b6eb1c
  3. Apr 14, 2022
  4. Mar 15, 2022
  5. Mar 10, 2022
  6. Mar 09, 2022
  7. Feb 22, 2022
  8. Feb 18, 2022
    • Georgy Moshkin's avatar
      build: static linking with tarantool · f77d1e5d
      Georgy Moshkin authored
      + tarantool-sys submodule
      + tarantool-patches directory
      + build.rs build script to patch and build tarantool
      + static linking with tarantool
      + refactoring for cli arguments
      f77d1e5d
  9. Feb 14, 2022
  10. Feb 04, 2022
  11. Jan 31, 2022
    • Yaroslav Dynnikov's avatar
      refactor: remove a bunch of unwraps · 96aba97a
      Yaroslav Dynnikov authored
      1. Replace `From` trait for raft::Entry with the `TryFrom`. Fairly
         handle its errors in the storage.
      
      2. Replace some other unwraps with "expect" with a more clear message.
      
      3. Support all of `raft::EntryType` variants.
      Verified
      96aba97a
  12. Jan 20, 2022
    • 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
  13. Jan 18, 2022
  14. Jan 17, 2022
  15. Dec 24, 2021
  16. Dec 20, 2021
  17. Dec 14, 2021
  18. Dec 13, 2021
  19. Dec 07, 2021
  20. Dec 03, 2021
  21. 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
  22. Nov 22, 2021
Loading