Skip to content

Commit 965fdfc

Browse files
committed
refactor(coprocessor): decide slow lane per chain
1 parent 8634d58 commit 965fdfc

12 files changed

+188
-121
lines changed

coprocessor/fhevm-engine/.sqlx/query-0330e3c36a122e2e590a6b45e7e15ff9429eeb5665ef4b790f10ec85822dcafc.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/.sqlx/query-156dcfa2ae70e64be2eb8014928745a9c95e29d18a435f4d2e2fda2afd7952bf.json

Lines changed: 0 additions & 17 deletions
This file was deleted.

coprocessor/fhevm-engine/.sqlx/query-31057c60a9fd76edba79444aff7bb703588c1f66f7c4789d31923d00e8eb71f3.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/.sqlx/query-93045bc18900ce0b5610ef3d36fab737dcb7635f4396b2138748a5e8603bba34.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/.sqlx/query-94e9cb426316068aa285da33e7fd1dfa34bf30db25bcf69a333a341b17b5557a.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

coprocessor/fhevm-engine/.sqlx/query-99f4c777cb37bcd4b28ac64e6def5355e74e6f7745a2bc22ca914dad7f2377ae.json

Lines changed: 0 additions & 19 deletions
This file was deleted.

coprocessor/fhevm-engine/.sqlx/query-b0d647e351694606fe631218d5ce4ce4a3b930e7f3160aa0ac4da93a5a522777.json

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/.sqlx/query-fca07da866e12ef5cb9f91e1044e9582bb2a9812d8439a1667260a2d84e15bac.json

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coprocessor/fhevm-engine/host-listener/src/database/ingest.rs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::HashSet;
1+
use std::collections::{HashMap, HashSet};
22

33
use alloy::primitives::Address;
44
use alloy::rpc::types::Log;
@@ -11,7 +11,8 @@ use crate::cmd::block_history::BlockSummary;
1111
use crate::contracts::{AclContract, TfheContract};
1212
use crate::database::dependence_chains::dependence_chains;
1313
use crate::database::tfhe_event_propagate::{
14-
acl_result_handles, tfhe_result_handle, Database, LogTfhe,
14+
acl_result_handles, tfhe_inputs_handle, tfhe_result_handle, ChainHash,
15+
Database, LogTfhe,
1516
};
1617

1718
pub struct BlockLogs<T> {
@@ -144,6 +145,40 @@ pub async fn ingest_block_logs(
144145
)
145146
.await;
146147

148+
let mut schedule_lane_by_chain: HashMap<ChainHash, i16> = HashMap::new();
149+
if let Some(limiter) = db.dependent_ops_limiter() {
150+
let mut dependent_ops_by_chain: HashMap<ChainHash, u32> =
151+
HashMap::new();
152+
for tfhe_log in &tfhe_event_log {
153+
if tfhe_log.is_allowed
154+
&& !tfhe_inputs_handle(&tfhe_log.event).is_empty()
155+
{
156+
*dependent_ops_by_chain
157+
.entry(tfhe_log.dependence_chain)
158+
.or_default() += 1;
159+
}
160+
}
161+
let mut limiter = limiter.lock().await;
162+
let mut allowed: u64 = 0;
163+
let mut throttled: u64 = 0;
164+
for chain in &chains {
165+
let count = dependent_ops_by_chain
166+
.get(&chain.hash)
167+
.copied()
168+
.unwrap_or(0);
169+
if count == 0 {
170+
continue;
171+
}
172+
if limiter.consume(count) {
173+
throttled += count as u64;
174+
schedule_lane_by_chain.insert(chain.hash, 1);
175+
} else {
176+
allowed += count as u64;
177+
}
178+
}
179+
db.record_dependent_ops_metrics(allowed, throttled);
180+
}
181+
147182
for tfhe_log in tfhe_event_log {
148183
let inserted = db.insert_tfhe_event(&mut tx, &tfhe_log).await?;
149184
at_least_one_insertion |= inserted;
@@ -173,6 +208,7 @@ pub async fn ingest_block_logs(
173208
chains,
174209
block_timestamp,
175210
&block_logs.summary,
211+
&schedule_lane_by_chain,
176212
)
177213
.await?;
178214
}

0 commit comments

Comments
 (0)