- Jan 28, 2022
- Jan 26, 2022
-
-
Yaroslav Dynnikov authored
For ambiguous concepts (such as Entry, Message) use prefix notation instead of suffixes.
-
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.
-
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.
-
Yaroslav Dynnikov authored
Use publicly available `tarantool::global_lua` instead of the self-made implementation.
-
- Jan 20, 2022
-
-
-
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
-
Originally it was `picolib::traft::storage::Message`. Now it's simply `picolib::Message`.
-
- Jan 19, 2022
-
-
Sergey V authored
-
- Jan 18, 2022
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
Move tarantool+slog related stuff to a separate module `tlog`. Introduce the `tlog!` macro for easier logging.
-
Yaroslav Dynnikov authored
The clap module we use for parsing command-line arguments allows specifying `default_value`. Unfortunately, it makes impossible to tell if an argument was actually passed. So it always overrides env var with a default value, which is undesirable.
-
Yaroslav Dynnikov authored
-
Sergey V authored
-
- Jan 17, 2022
-
-
Sergey V authored
-
- Dec 28, 2021
-
-
Yaroslav Dynnikov authored
1. Change raft_state schema. Now it's more suitable for updating individual fields of the raft hard state. Close https://gitlab.com/picodata/picodata/picodata/-/issues/13 2. Persist commit and applied indices. Close https://gitlab.com/picodata/picodata/picodata/-/issues/14 3. Rearrange storage code. High cohesion, low coupling, as they teach us.
-
Yaroslav Dynnikov authored
-
- Dec 24, 2021
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
This patch implements the Storage trait without MemStorage from example. All data is persisted it tarantool spaces. Also, Rust modules are slightly reorganized. Close https://gitlab.com/picodata/picodata/picodata/-/issues/11
-
Yaroslav Dynnikov authored
- There's a fiber which ticks logical clock. - There's a `raft_propose` API exposed in the Tarantool console. Close https://gitlab.com/picodata/picodata/picodata/-/issues/7 Close https://gitlab.com/picodata/picodata/picodata/-/issues/8
-
- Dec 20, 2021
-
-
Yaroslav Dynnikov authored
-
- Dec 14, 2021
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
-
- Dec 13, 2021
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
-
- Dec 07, 2021
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
-
- Dec 03, 2021
-
-
Yaroslav Dynnikov authored
-
Yaroslav Dynnikov authored
It used to panic if the env variable wasn't set. Also, this patch covers it with tests.
-
Yaroslav Dynnikov authored
-
- Nov 29, 2021
-
-
Yaroslav Dynnikov authored
-
- Nov 23, 2021
-
-
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 ```
-
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.
-
- Nov 22, 2021
-
-
Yaroslav Dynnikov authored
-