Skip to content

Commit 04d9519

Browse files
committed
server: fix blocking rayon threads
1 parent cc6b533 commit 04d9519

File tree

3 files changed

+37
-33
lines changed

3 files changed

+37
-33
lines changed

mpc-server/src/bin/gen_cert.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use color_eyre::{eyre::Context, Result};
1+
use color_eyre::{Result, eyre::Context};
22
use rcgen::CertifiedKey;
33
use std::path::PathBuf;
44

mpc-server/src/matching.rs

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ pub async fn run_matches(
4444
.into_iter()
4545
.filter(|u| !user1.checked.contains(&u.id))
4646
.collect::<Vec<_>>();
47-
println!("all users: {all_users:?}");
4847

4948
update_checked(
5049
&conn,
@@ -61,36 +60,41 @@ pub async fn run_matches(
6160
.map(|u| u.id.clone())
6261
.collect::<Vec<String>>();
6362

64-
let verified_matches = all_users
65-
.into_par_iter()
66-
.enumerate()
67-
.map(
68-
|(thread_id, user2)| -> Result<String, Box<dyn std::error::Error + Send + Sync + 'static>> {
69-
let shares_user1 = get_shares(&user1.id, true)?;
70-
let shares_user2 = get_shares(&user2.id, false)?;
71-
72-
let share0 = merge_shares(shares_user1[0].clone(), shares_user2[0].clone())?;
73-
let share1 = merge_shares(shares_user1[1].clone(), shares_user2[1].clone())?;
74-
let share2 = merge_shares(shares_user1[2].clone(), shares_user2[2].clone())?;
75-
76-
match run_match(
77-
thread_id,
78-
[share0, share1, share2],
79-
parties_certs.clone(),
80-
program_artifact,
81-
constraint_system.clone(),
82-
recursive,
83-
has_zk,
84-
prover_crs.clone(),
85-
verifier_crs.clone(),
86-
) {
87-
Ok(_) => Ok(user2.id),
88-
Err(e) => Err(e),
89-
}
90-
},
91-
)
92-
.filter(|m| m.is_ok())
93-
.collect::<Result<Vec<String>, _>>()?;
63+
println!("ALL USERS: {:?}", all_users.len());
64+
65+
let pool = rayon::ThreadPoolBuilder::new().num_threads(5).build()?;
66+
67+
let verified_matches = pool.install(|| -> Result<Vec<String>, Box<dyn std::error::Error + Send + Sync + 'static>> {
68+
all_users
69+
.into_par_iter()
70+
.enumerate()
71+
.map(|(thread_id, user2)| -> Result<String, Box<dyn std::error::Error + Send + Sync + 'static>> {
72+
let shares_user1 = get_shares(&user1.id, true)?;
73+
let shares_user2 = get_shares(&user2.id, false)?;
74+
75+
let share0 = merge_shares(shares_user1[0].clone(), shares_user2[0].clone())?;
76+
let share1 = merge_shares(shares_user1[1].clone(), shares_user2[1].clone())?;
77+
let share2 = merge_shares(shares_user1[2].clone(), shares_user2[2].clone())?;
78+
79+
match run_match(
80+
thread_id,
81+
[share0, share1, share2],
82+
parties_certs.clone(),
83+
program_artifact,
84+
constraint_system.clone(),
85+
recursive,
86+
has_zk,
87+
prover_crs.clone(),
88+
verifier_crs.clone(),
89+
) {
90+
Ok(_) => Ok(user2.id),
91+
Err(e) => Err(e),
92+
}
93+
},
94+
)
95+
.filter(|m| m.is_ok())
96+
.collect::<Result<Vec<String>, _>>()
97+
})?;
9498

9599
println!("verified matches: {verified_matches:?}");
96100

web-app/src/pages/Matches.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export default function Matches() {
7373
</h2>
7474
<div className="p-4 bg-gradient-to-r from-pink-50 to-purple-50 rounded-xl border border-pink-100 mb-6">
7575
<p className="text-gray-600 mb-2">
76-
This might take up to 15 seconds - we&apos;re doing some heavy cryptographic lifting behind the scenes! 🔐
76+
This might take up to 20 seconds - we&apos;re doing some heavy cryptographic lifting behind the scenes! 🔐
7777
</p>
7878
<p className="text-sm text-gray-500 mb-2">While you wait, here&apos;s what&apos;s happening:</p>
7979
<ul className="list-disc list-inside text-sm text-gray-500 mt-2 space-y-1">

0 commit comments

Comments
 (0)