Skip to content

Commit

Permalink
In-memory Engine: implement range load (tikv#16500)
Browse files Browse the repository at this point in the history
ref tikv#16141

implement range load

Signed-off-by: SpadeA-Tang <[email protected]>
  • Loading branch information
SpadeA-Tang authored Feb 27, 2024
1 parent 3c302cb commit 867c3cb
Show file tree
Hide file tree
Showing 15 changed files with 747 additions and 117 deletions.
23 changes: 18 additions & 5 deletions Cargo.lock

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

5 changes: 4 additions & 1 deletion components/engine_traits/src/range_cache_engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use std::{cmp, fmt::Debug};
use keys::{enc_end_key, enc_start_key};
use kvproto::metapb;

use crate::{Iterable, Snapshot, WriteBatchExt};
use crate::{Iterable, KvEngine, Snapshot, WriteBatchExt};

/// RangeCacheEngine works as a range cache caching some ranges (in Memory or
/// NVME for instance) to improve the read performance.
Expand All @@ -19,6 +19,9 @@ pub trait RangeCacheEngine:
// Sequence number is shared between RangeCacheEngine and disk KvEnigne to
// provide atomic write
fn snapshot(&self, range: CacheRange, read_ts: u64, seq_num: u64) -> Option<Self::Snapshot>;

type DiskEngine: KvEngine;
fn set_disk_engine(&mut self, disk_engine: Self::DiskEngine);
}

#[derive(Clone, Debug, PartialEq, Eq)]
Expand Down
2 changes: 1 addition & 1 deletion components/hybrid_engine/src/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ mod tests {
{
let mut core = memory_engine.core().write().unwrap();
core.mut_range_manager().set_range_readable(&range, true);
core.mut_range_manager().set_safe_ts(&range, 10);
core.mut_range_manager().set_safe_point(&range, 10);
}

let hybrid_engine = HybridEngine::new(disk_engine, memory_engine.clone());
Expand Down
4 changes: 2 additions & 2 deletions components/hybrid_engine/src/write_batch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ mod tests {
let mut core = memory_engine.core().write().unwrap();
core.mut_range_manager()
.set_range_readable(&range_clone, true);
core.mut_range_manager().set_safe_ts(&range_clone, 5);
core.mut_range_manager().set_safe_point(&range_clone, 5);
}
})
.unwrap();
Expand Down Expand Up @@ -185,7 +185,7 @@ mod tests {
{
let mut core = memory_engine.core().write().unwrap();
core.mut_range_manager().set_range_readable(&range, true);
core.mut_range_manager().set_safe_ts(&range, 10);
core.mut_range_manager().set_safe_point(&range, 10);
}
})
.unwrap();
Expand Down
4 changes: 2 additions & 2 deletions components/raftstore/src/store/worker/read.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2541,7 +2541,7 @@ mod tests {
{
let mut core = memory_engine.core().write().unwrap();
core.mut_range_manager().set_range_readable(&range, true);
core.mut_range_manager().set_safe_ts(&range, 1);
core.mut_range_manager().set_safe_point(&range, 1);
}
let kv = (&[DATA_PREFIX, b'a'], b"b");
reader.kv_engine.put(kv.0, kv.1).unwrap();
Expand Down Expand Up @@ -2589,7 +2589,7 @@ mod tests {
{
let mut core = memory_engine.core().write().unwrap();
core.mut_range_manager().set_range_readable(&range, true);
core.mut_range_manager().set_safe_ts(&range, 10);
core.mut_range_manager().set_safe_point(&range, 10);
}

let mut snap_ctx = SnapshotContext {
Expand Down
5 changes: 5 additions & 0 deletions components/region_cache_memory_engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,8 @@ slog-global = { workspace = true }
slog = { workspace = true }
engine_rocks = { workspace = true }
fail = "0.5"
yatp = { workspace = true }

[dev-dependencies]
keys = { workspace = true }
tempfile = "3.0"
Loading

0 comments on commit 867c3cb

Please sign in to comment.