Skip to content

Commit 66d2135

Browse files
committed
fixup
Signed-off-by: tison <wander4096@gmail.com>
1 parent 0b71f49 commit 66d2135

File tree

5 files changed

+47
-39
lines changed

5 files changed

+47
-39
lines changed

cmd/percas/src/start.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ impl CommandStart {
6464
}
6565
log::info!("Percas is starting with loaded config: {config:#?}");
6666

67+
let io_runtime = make_io_runtime();
6768
let server_runtime = make_server_runtime();
6869
let gossip_runtime = make_gossip_runtime();
6970
server_runtime.block_on(run_server(
71+
&io_runtime,
7072
&server_runtime,
7173
&gossip_runtime,
7274
node_id,
@@ -75,6 +77,14 @@ impl CommandStart {
7577
}
7678
}
7779

80+
fn make_io_runtime() -> Runtime {
81+
percas_core::Builder::new("foyer_io_runtime", "foyer_io_thread")
82+
.worker_threads(4)
83+
.max_blocking_threads(num_cpus().get() * 2)
84+
.build()
85+
.unwrap()
86+
}
87+
7888
fn make_telemetry_runtime() -> Runtime {
7989
make_runtime("telemetry_runtime", "telemetry_thread", 1)
8090
}
@@ -89,6 +99,7 @@ fn make_gossip_runtime() -> Runtime {
8999
}
90100

91101
async fn run_server(
102+
io_rt: &Runtime,
92103
server_rt: &Runtime,
93104
gossip_rt: &Runtime,
94105
node_id: Uuid,
@@ -105,6 +116,7 @@ async fn run_server(
105116
})?;
106117

107118
let engine = FoyerEngine::try_new(
119+
io_rt,
108120
config.storage.data_dir.as_path(),
109121
config.storage.memory_capacity.into(),
110122
config.storage.disk_capacity.into(),

crates/core/benches/benchmark.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ fn foyer_engine(c: &mut Criterion) {
3030
let runtime = tokio::runtime::Builder::new_current_thread()
3131
.build()
3232
.unwrap();
33+
34+
let test_rt = percas_core::make_runtime("test_runtime", "test_thread", 2);
35+
3336
{
3437
let dir = tempdir_in("/tmp").unwrap();
3538
let engine = runtime.block_on(async {
3639
FoyerEngine::try_new(
40+
&test_rt,
3741
dir.path(),
3842
ByteSize::default(),
3943
ByteSize::gib(4),
@@ -63,6 +67,7 @@ fn foyer_engine(c: &mut Criterion) {
6367
let dir = tempdir_in("/tmp").unwrap();
6468
let engine = runtime.block_on(async {
6569
FoyerEngine::try_new(
70+
&test_rt,
6671
dir.path(),
6772
ByteSize::default(),
6873
ByteSize::gib(4),

crates/core/src/config.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -534,17 +534,13 @@ mod tests {
534534
filter = 'INFO'
535535
dir = 'logs'
536536
max_files = 64
537-
538537
[telemetry.logs.stderr]
539538
filter = 'INFO'
540-
541539
[telemetry.logs.opentelemetry]
542540
filter = 'INFO'
543541
otlp_endpoint = 'http://127.0.0.1:4317'
544-
545542
[telemetry.traces]
546543
capture_log_filter = 'INFO'
547-
548544
[telemetry.traces.opentelemetry]
549545
otlp_endpoint = 'http://127.0.0.1:4317'
550546
[telemetry.metrics.opentelemetry]

crates/core/src/engine.rs

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,12 @@ use foyer::HybridCachePolicy;
2727
use foyer::IoEngineConfig;
2828
use foyer::IopsCounter;
2929
use foyer::LfuConfig;
30-
use foyer::PsyncIoEngineConfig;
3130
use foyer::RecoverMode;
3231
use foyer::Spawner;
3332
use mixtrics::registry::noop::NoopMetricsRegistry;
3433
use mixtrics::registry::opentelemetry_0_31::OpenTelemetryMetricsRegistry;
3534
use parse_display::Display;
3635

37-
use crate::Runtime;
3836
use crate::newtype::DiskThrottle;
3937
use crate::num_cpus;
4038
use crate::runtime;
@@ -51,12 +49,11 @@ impl std::error::Error for EngineError {}
5149
pub struct FoyerEngine {
5250
inner: HybridCache<Vec<u8>, Vec<u8>>,
5351
capacity: ByteSize,
54-
#[expect(dead_code)]
55-
runtime: Runtime,
5652
}
5753

5854
impl FoyerEngine {
5955
pub async fn try_new(
56+
io_runtime: &runtime::Runtime,
6057
data_dir: &Path,
6158
memory_capacity: ByteSize,
6259
disk_capacity: ByteSize,
@@ -96,8 +93,6 @@ impl FoyerEngine {
9693
.build()
9794
.map_err(|err| EngineError(format!("failed to create device: {err}")))?;
9895

99-
let psync_engine = Box::new(PsyncIoEngineConfig::new());
100-
10196
let io_engine: Box<dyn IoEngineConfig> = {
10297
#[cfg(target_os = "linux")]
10398
{
@@ -107,16 +102,11 @@ impl FoyerEngine {
107102

108103
#[cfg(not(target_os = "linux"))]
109104
{
110-
psync_engine
105+
use foyer::PsyncIoEngineConfig;
106+
Box::new(PsyncIoEngineConfig::new())
111107
}
112108
};
113109

114-
let runtime = runtime::Builder::new("foyer_io_runtime", "foyer_io_thread")
115-
.worker_threads(4)
116-
.max_blocking_threads(num_cpus().get() * 2)
117-
.build()
118-
.map_err(|err| EngineError(format!("failed to build foyer IO runtime: {err}")))?;
119-
120110
let parallelism = num_cpus().get();
121111
let cache = HybridCacheBuilder::new()
122112
.with_policy(HybridCachePolicy::WriteOnEviction)
@@ -141,15 +131,14 @@ impl FoyerEngine {
141131
)
142132
.with_io_engine_config(io_engine)
143133
.with_recover_mode(RecoverMode::Quiet)
144-
.with_spawner(runtime.spawn_blocking(Spawner::current).await)
134+
.with_spawner(io_runtime.spawn_blocking(Spawner::current).await)
145135
.build()
146136
.await
147137
.map_err(|err| EngineError(err.to_string()))?;
148138

149139
Ok(FoyerEngine {
150140
inner: cache,
151141
capacity: disk_capacity,
152-
runtime,
153142
})
154143
}
155144

@@ -188,25 +177,30 @@ mod tests {
188177

189178
use super::*;
190179

191-
#[tokio::test]
192-
async fn test_get() {
193-
let temp_dir = tempfile::tempdir().unwrap();
194-
195-
let engine = FoyerEngine::try_new(
196-
temp_dir.path(),
197-
ByteSize::kib(512),
198-
ByteSize::mib(1),
199-
None,
200-
None,
201-
)
202-
.await
203-
.unwrap();
204-
205-
engine.put(b"foo".to_vec().as_ref(), b"bar".to_vec().as_ref());
206-
207-
assert_compact_debug_snapshot!(
208-
engine.get(b"foo".to_vec().as_ref()).await,
209-
@"Some([98, 97, 114])"
210-
);
180+
#[test]
181+
fn test_get() {
182+
let runtime = runtime::make_runtime("test_runtime", "test_thread", 2);
183+
184+
runtime.block_on(async {
185+
let temp_dir = tempfile::tempdir().unwrap();
186+
187+
let engine = FoyerEngine::try_new(
188+
&runtime,
189+
temp_dir.path(),
190+
ByteSize::kib(512),
191+
ByteSize::mib(1),
192+
None,
193+
None,
194+
)
195+
.await
196+
.unwrap();
197+
198+
engine.put(b"foo".to_vec().as_ref(), b"bar".to_vec().as_ref());
199+
200+
assert_compact_debug_snapshot!(
201+
engine.get(b"foo".to_vec().as_ref()).await,
202+
@"Some([98, 97, 114])"
203+
);
204+
});
211205
}
212206
}

tests/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ fn start_test_server(test_name: &str, rt: &Runtime) -> Option<TestServerState> {
9191
let (shutdown_tx, shutdown_rx) = mea::shutdown::new_pair();
9292
let server_state = rt.block_on(async move {
9393
let engine = FoyerEngine::try_new(
94+
rt,
9495
&config.storage.data_dir,
9596
config.storage.memory_capacity.into(),
9697
config.storage.disk_capacity.into(),

0 commit comments

Comments
 (0)