summaryrefslogtreecommitdiff
path: root/cli/worker.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-11-17 14:14:50 +0100
committerRy Dahl <ry@tinyclouds.org>2019-11-17 08:14:50 -0500
commitf356b2bd5e3d46eaf4147a38a2f7c7e7c2824fbf (patch)
tree3a06e7c15fcbba0587c498b11c498d4b9494c11c /cli/worker.rs
parent2b3afda625c5818f01a45f52075ac04307224b30 (diff)
refactor: fixes for futures (#3363)
After landing #3358 the benchmarks exploded indicating problems with workers and deno_core_http_bench. This PR dramatically fixes thread/syscall count that showed up on benchmarks. Thread count is not back to previous levels but difference went from hundreds/thousands to about ~50.
Diffstat (limited to 'cli/worker.rs')
-rw-r--r--cli/worker.rs19
1 files changed, 7 insertions, 12 deletions
diff --git a/cli/worker.rs b/cli/worker.rs
index aca822888..d5cc801d8 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -144,17 +144,12 @@ impl Worker {
/// Post message to worker as a host.
///
/// This method blocks current thread.
- pub fn post_message(
- self: &Self,
- buf: Buf,
- ) -> impl Future<Output = Result<(), ErrBox>> {
+ pub fn post_message(self: &Self, buf: Buf) -> Result<(), ErrBox> {
let channels = self.external_channels.lock().unwrap();
let mut sender = channels.sender.clone();
- async move {
- let result = sender.send(buf).map_err(ErrBox::from).await;
- drop(sender);
- result
- }
+ futures::executor::block_on(sender.send(buf))
+ .map(|_| ())
+ .map_err(ErrBox::from)
}
/// Get message from worker as a host.
@@ -396,7 +391,7 @@ mod tests {
let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes();
- let r = futures::executor::block_on(worker_.post_message(msg).boxed());
+ let r = worker_.post_message(msg);
assert!(r.is_ok());
let maybe_msg =
@@ -409,7 +404,7 @@ mod tests {
.to_string()
.into_boxed_str()
.into_boxed_bytes();
- let r = futures::executor::block_on(worker_.post_message(msg).boxed());
+ let r = worker_.post_message(msg);
assert!(r.is_ok());
})
}
@@ -439,7 +434,7 @@ mod tests {
);
let msg = json!("hi").to_string().into_boxed_str().into_boxed_bytes();
- let r = futures::executor::block_on(worker_.post_message(msg));
+ let r = worker_.post_message(msg);
assert!(r.is_ok());
futures::executor::block_on(worker_future).unwrap();