You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"Move-data-block" (more granular than "move table")
Start the next round of compaction reads before starting the merge (cpu) work.
Last-level of each tree should have double-size tables, but half as many. 🔴
VSR: Size manifest trailer, and pace manifest compaction, to guarantee capacity. 🔴
VSR: Encode configuration data into superblock. 🔴
VSR: Reserve more space in SuperBlock.VSRState for future use. 🔴
Guard against running a binary against a data file that was created with a different configuration. 🟡
LSM: Add value count to TableInfo. (And possibly value-block count, since compression will decouple the ratio between the two.) 🔴
Redo snapshots. 🔴
Snapshots should be relative to the op that "creates" them, not the op that compacts them.
Maybe use timestamps instead of ops as snapshot ids.
Store snapshot in manifest block header (like we do for all other blocks).
Reserve a some extra space in the superblock for future use, just in case? (Since "growing" the superblock is not possible once a replica is formatted.)
VSR: Align grid zone start to grid block size. 🔴
VSR: Remove superblock trailers. 🔴
Encode the client sessions trailer into the grid.
Encode the manifest trailer into grid blocks. (As an on-disk doubly-linked list.)
Encode the manifest-freeset into one grid block.
Increase the number of superblock copies, since they will be so much smaller.
VSR: Panic on nondeterminism, don't try to state sync recover. 🔴
VSR: Include checkpoint identifier in prepare messages instead of prepare_ok messages. (Requires 256-byte headers.) 🔴
VSR: Remove state sync kludge. (Requires async checkpoints.) 🔴
VSR: Grid scrubber, to guard against double-faults. 🟡 (This is mostly done.)
VSR: repair_pipeline_read_callback recurses when messages are cached in the pipeline. Restructure to avoid stack overflow risk. 🟡
Storage: Audit TODOs in linux.zig and src/storage.zig. 🔴
VSR: Write + erase a random amount of sectors during replica formatting, to ensure that if all replicas are each deployed to the same model of SSD, that they are not overexposed to faults that impact the same physical block address on each SSD.
Note that this does not need to impact the storage format at all.
VSR: Grid block reference-counting or cache/stash, to avoid internal block copying during compaction.
VSR: Adaptive message timeouts.
VSR: To speed up grid block sync, allow a replica to intelligently send blocks before they are asked for. (This is important for e.g. manifest repair, which is otherwise sequential.) The receiving replica should stash these in its grid block pool so that it can (hopefully) avoid a round trip to repair them.
The tasks listed are not guaranteed, and they are not ordered.
The intent is to give a sense of the project's direction.
Stability: Storage
VSR: Encode configuration data into superblock.🔴SuperBlock.VSRState
for future use. 🔴TableInfo
. (And possibly value-block count, since compression will decouple the ratio between the two.) 🔴Stability: API
scope_rollback_log
size. (Maybe? 🔴)get_account_transfers
(temporary feature until full query API is done). (Requires range queries). 🔴flags
as struct-of-boolean instead of integer bitset. (Golang client does this already, Node client does not.) 🟡Safety
prepare
messages instead ofprepare_ok
messages. (Requires 256-byte headers.) 🔴repair_pipeline_read_callback
recurses when messages are cached in the pipeline. Restructure to avoid stack overflow risk. 🟡linux.zig
andsrc/storage.zig
. 🔴Performance
Experience: Operations
lsm_forest_node_count
). (Currently it is constant and too small.) 🔴NodePools.acquire()
has no nodes available. 🔴table_count_max
.) 🔴Experience: Client
Testing
Documentation
The text was updated successfully, but these errors were encountered: