Skip to content

Commit 0e71c5c

Browse files
authored
fix: promise returned by getRuntimeMetrics never resolved (#573)
1 parent 833baca commit 0e71c5c

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

crates/base/src/runtime/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ use base_rt::BlockingScopeCPUUsage;
2424
use base_rt::DenoRuntimeDropToken;
2525
use base_rt::DropToken;
2626
use base_rt::RuntimeState;
27+
use base_rt::RuntimeWaker;
2728
use cooked_waker::IntoWaker;
2829
use cooked_waker::WakeRef;
2930
use cpu_timer::CPUTimer;
@@ -471,6 +472,7 @@ where
471472
..
472473
} = init_opts.unwrap();
473474

475+
let waker = Arc::<AtomicWaker>::default();
474476
let drop_token = CancellationToken::default();
475477
let is_user_worker = conf.is_user_worker();
476478
let is_some_entry_point = maybe_entrypoint.is_some();
@@ -486,6 +488,7 @@ where
486488
.unwrap_or_else(|| get_default_permissions(conf.to_worker_kind()));
487489

488490
struct Bootstrap {
491+
waker: Arc<AtomicWaker>,
489492
js_runtime: JsRuntime,
490493
mem_check: Arc<MemCheck>,
491494
has_inspector: bool,
@@ -912,6 +915,7 @@ where
912915
op_state.put(promise_metrics.clone());
913916
op_state.put(runtime_state.clone());
914917
op_state.put(GlobalMainContext(main_context));
918+
op_state.put(RuntimeWaker(waker.clone()))
915919
}
916920

917921
{
@@ -946,6 +950,7 @@ where
946950
}
947951

948952
Ok(Bootstrap {
953+
waker,
949954
js_runtime,
950955
mem_check,
951956
has_inspector,
@@ -1061,6 +1066,7 @@ where
10611066
.await;
10621067

10631068
let Bootstrap {
1069+
waker,
10641070
mut js_runtime,
10651071
mem_check,
10661072
main_module_url,
@@ -1181,7 +1187,7 @@ where
11811187
promise_metrics,
11821188

11831189
mem_check,
1184-
waker: Arc::default(),
1190+
waker,
11851191

11861192
beforeunload_cpu_threshold: Arc::new(beforeunload_cpu_threshold),
11871193
beforeunload_mem_threshold: Arc::new(beforeunload_mem_threshold),

crates/base_rt/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::sync::Arc;
66
use cpu_timer::get_thread_time;
77
use deno_core::anyhow::Context;
88
use deno_core::error::AnyError;
9+
use deno_core::futures::task::AtomicWaker;
910
use deno_core::OpState;
1011
use deno_core::Resource;
1112
use deno_core::V8CrossThreadTaskSpawner;
@@ -194,3 +195,6 @@ impl BlockingScopeCPUUsageMetricExt for &mut OpState {
194195
})
195196
}
196197
}
198+
199+
#[derive(Debug, Clone)]
200+
pub struct RuntimeWaker(pub Arc<AtomicWaker>);

ext/runtime/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use std::sync::Arc;
77
use base_mem_check::WorkerHeapStatistics;
88
use base_rt::DropToken;
99
use base_rt::RuntimeState;
10+
use base_rt::RuntimeWaker;
1011
use deno_core::error::AnyError;
1112
use deno_core::op2;
1213
use deno_core::v8;
@@ -126,7 +127,7 @@ impl WorkerMetricSource {
126127
let state = runtime.op_state();
127128
let state_mut = state.borrow_mut();
128129

129-
state_mut.waker.clone()
130+
state_mut.borrow::<RuntimeWaker>().0.clone()
130131
};
131132

132133
Self { handle, waker }

0 commit comments

Comments
 (0)