Skip to content
Merged
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
35a9baa
docs(storage): plan concrete RocksDB ownership migration
AlexStocks Jul 22, 2026
ac26b98
fix(runtime): drain RocksDB owners during storage swap
AlexStocks Jul 22, 2026
51cad9d
fix(runtime): let paused monitors observe shutdown
AlexStocks Jul 22, 2026
cde69a4
refactor(storage): use concrete RocksDB ownership
AlexStocks Jul 22, 2026
ff4d372
fix(storage): own RocksDB shutdown lifecycle
AlexStocks Jul 22, 2026
27d5c6a
refactor(raft): store logs in concrete RocksDB handles
AlexStocks Jul 22, 2026
f2d65a7
docs(storage): define the unique RocksDB shutdown owner
AlexStocks Jul 22, 2026
b22268f
test(storage): harden RocksDB lifecycle coverage
AlexStocks Jul 22, 2026
2c348dc
fix(raft): drain storage owners before snapshot restore
AlexStocks Jul 22, 2026
bde6986
refactor(storage): remove the Engine abstraction crate
AlexStocks Jul 22, 2026
548a966
docs(raft): plan transactional snapshot installation
AlexStocks Jul 22, 2026
db889be
refactor(storage): stage snapshot restore before commit
AlexStocks Jul 22, 2026
abd679c
fix(raft): gate every hot-swappable storage owner
AlexStocks Jul 22, 2026
eacd184
fix(raft): persist snapshot install recovery state
AlexStocks Jul 22, 2026
cc63bca
fix(raft): make snapshot pauses cancellation-safe
AlexStocks Jul 22, 2026
1a8e5bd
docs: plan Python integration hardening
AlexStocks Jul 23, 2026
1b19f23
ci(test): run Python integration tests against Kiwi
AlexStocks Jul 23, 2026
baa1bd4
fix(resp): encode nulls for negotiated protocol
AlexStocks Jul 23, 2026
24a3c1d
fix(resp): encode RESP2 null correctly
AlexStocks Jul 23, 2026
7c57d4e
fix(storage): preserve binary string values
AlexStocks Jul 23, 2026
3c1874d
test(storage): cover multi-instance binary mget
AlexStocks Jul 23, 2026
e41af5a
fix(storage): support Redis key glob matching
AlexStocks Jul 23, 2026
8a027a3
fix(storage): make key glob matching binary safe
AlexStocks Jul 23, 2026
4b43a22
test: align Python integration tests with Redis semantics
AlexStocks Jul 23, 2026
b9ab778
test: propagate Python worker failures
AlexStocks Jul 23, 2026
4dc8634
fix(storage): match Redis glob class edge cases
AlexStocks Jul 23, 2026
a8199b8
fix(storage): serialize multi-instance multi-key commands
AlexStocks Jul 23, 2026
585daa0
fix(storage): match Redis empty glob edge cases
AlexStocks Jul 23, 2026
52aa56e
test: harden multi-key concurrency coverage
AlexStocks Jul 23, 2026
b303a16
fix(storage): preserve scan allkeys matching
AlexStocks Jul 23, 2026
e8188b0
test: bound Python integration I/O
AlexStocks Jul 23, 2026
4749d7e
fix(storage): make command visibility gate async
AlexStocks Jul 23, 2026
6549977
test: guarantee concurrent mutation observation
AlexStocks Jul 23, 2026
512e5e7
fix(storage): preserve list tail after initial lpush
AlexStocks Jul 23, 2026
65480dd
fix(storage): preserve binary scan entries
AlexStocks Jul 23, 2026
e7c0e4c
fix(storage): make snapshot restore durable
AlexStocks Jul 23, 2026
4d6bd4c
perf(storage): seek binary hscan prefixes
AlexStocks Jul 23, 2026
66a37cb
fix(raft): preserve snapshot cleanup marker
AlexStocks Jul 23, 2026
49a9b30
chore: merge latest main
AlexStocks Jul 23, 2026
3f8a3af
refactor(cmd): centralize scan option parsing
AlexStocks Jul 23, 2026
14fd6cb
fix: harden snapshot coordination and glob matching
AlexStocks Jul 24, 2026
98eb08d
fix(storage): restore Redis empty glob semantics
AlexStocks Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ jobs:
run: make -C tests install-deps

- name: Run integration tests
run: make -C tests test-python
run: bash tests/run_python_integration.sh

sanitizers:
name: Sanitizers (${{ matrix.sanitizer }})
Expand Down
5 changes: 2 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,8 @@ Workspace members under `src/`:
- `cmd/` — Redis command implementations. Each command implements the `Cmd` trait.
- `executor/` — Async command executor / task pool.
- `client/` — Per-connection client state (`argv`, `cmd_name`, `key`, reply buffer, authentication).
- `storage/` — Multi-instance RocksDB storage, column families, TTL, key encoding, and log index for Raft.
- `engine/` — `Engine` trait abstraction and RocksDB engine implementation.
- `raft/` — OpenRaft integration, log store, state machine, snapshot archive, and gRPC services.
- `storage/` — Multi-instance concrete RocksDB ownership, column families, TTL, key encoding, and log index for Raft.
- `raft/` — OpenRaft integration, concrete RocksDB log-store ownership, state machine, snapshot archive, and gRPC services.
- `conf/` — Configuration loading, validation, and sample-config generation.
- `kstd/` — Utilities, including `LockMgr` for sharded key-level locking.
- `common/runtime/` — Dual-runtime manager, async message channel between network and storage runtimes, and `StorageServer`.
Expand Down
13 changes: 1 addition & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[workspace]
resolver = "2"
members = [
"src/engine",
"src/storage",
"src/kstd",
"src/common/macro",
Expand Down Expand Up @@ -75,9 +74,9 @@ uuid = { version = "1.23", features = ["v4", "serde"] }
openraft = { version = "0.9", features = ["serde", "storage-v2"] }
proptest = "1.11"
arc-swap = "1.7"
windows-sys = { version = "0.61.2", features = ["Win32_Storage_FileSystem"] }

## workspaces members
engine = { path = "src/engine" }
storage = { path = "src/storage" }
kstd = { path = "src/kstd" }
common-macro = { path = "src/common/macro" }
Expand Down Expand Up @@ -107,4 +106,4 @@ lto = "thin"
overflow-checks = false
opt-level = "s" # defaults to be 3
incremental = false
codegen-units = 1
codegen-units = 1
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ src/server/ → Entry point (main.rs)
src/net/ → TCP server, connection handling, cluster routing
src/cmd/ → Command definitions: Cmd trait, CmdMeta, command table
src/executor/ → Command executor: tokio async task pool
src/storage/ → Multi-instance RocksDB, column families, TTL
src/engine/ → Engine trait abstraction over RocksDB
src/storage/ → Multi-instance RocksDB ownership, column families, TTL
src/resp/ → RESP protocol: parser, encoder, RespData types
src/raft/ → Raft consensus: OpenRaft integration, state machine, router
src/raft/ → Raft consensus: OpenRaft integration, RocksDB log store, state machine, router
src/conf/ → Configuration: loading, validation, RaftClusterConfig
src/client/ → Client context: connection state, argv, reply buffer
src/common/runtime/ → Runtime management: async channel between net & storage
Expand Down
5 changes: 2 additions & 3 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,9 @@ src/server/ → 入口 (main.rs)
src/net/ → TCP 服务、连接管理、集群路由
src/cmd/ → 命令定义:Cmd trait、CmdMeta、命令表
src/executor/ → 命令执行器:tokio 异步任务池
src/storage/ → 多实例 RocksDB、列族、TTL
src/engine/ → RocksDB 引擎 trait 抽象
src/storage/ → 多实例 RocksDB 所有权、列族、TTL
src/resp/ → RESP 协议:解析、编码、RespData 类型
src/raft/ → Raft 共识:OpenRaft 集成、状态机、路由器
src/raft/ → Raft 共识:OpenRaft 集成、RocksDB 日志存储、状态机、路由器
src/conf/ → 配置:加载、校验、集群配置
src/client/ → 客户端上下文:连接状态、参数、响应缓冲
src/common/runtime/ → 运行时管理:网络与存储间的异步通道
Expand Down
Loading
Loading