ConcurrentStore.inner is now Arc<RwLock<CubeStore>>: all read paths take the read side, all mutations + checkpoint take the write side. Readers no longer exclude each other and overlap an active writer (verified by concurrent_reads_dont_block_on_writer + cube-bench Task 4 section). WAL, checkpoint, and coordinate encoding are untouched, so durability/replay is unchanged (.check green). Honest finding recorded in docs/task4-reader-writer-sharding.md: on this 8-core host std RwLock removes reader-vs-reader exclusion (correct) but shows no wall-clock speedup for short reads (cache-line bounce on one shared lock). Real read-throughput scaling would need sharded/lock-free storage, left as a follow-up decision rather than invented.
35 lines
844 B
TOML
35 lines
844 B
TOML
[package]
|
|
name = "cubesys"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "CUBELinux-2 system integration: one CubeStore shared by cubefs, cubecode and cubecrypt (PDF Packages 3-5 bound into a single running system)."
|
|
|
|
[features]
|
|
# Exposes low-level internals (e.g. `ConcurrentStore::inner_write`) used only
|
|
# by the `cube-bench` crate to measure reader/writer sharding directly.
|
|
bench = []
|
|
|
|
[dependencies]
|
|
cubecoords = { path = "../cubecoords" }
|
|
cubestore = { path = "../cubestore" }
|
|
cubefs = { path = "../cubefs" }
|
|
cubecode = { path = "../cubecode" }
|
|
cubecrypt = { path = "../cubecrypt" }
|
|
|
|
[[bin]]
|
|
name = "cube"
|
|
path = "src/bin/cube.rs"
|
|
|
|
[[bin]]
|
|
name = "cube-demo"
|
|
path = "src/bin/cube_demo.rs"
|
|
|
|
[[bin]]
|
|
name = "cube-server"
|
|
path = "src/bin/cube-server.rs"
|
|
|
|
[[bin]]
|
|
name = "cubec"
|
|
path = "src/bin/cubec.rs"
|