Skip to content

Commit 3caf4de

Browse files
authored
Merge pull request #1801 from input-output-hk/jpraynaud/1793-fix-acquire-pool-timeout-prover
Fix: avoid pool acquire timeout during Cardano transaction prover cache computation
2 parents e38d6b7 + 1c8eb41 commit 3caf4de

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.5.36"
3+
version = "0.5.37"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/services/prover.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,31 @@ impl ProverService for MithrilProverService {
174174
.block_range_root_retriever
175175
.compute_merkle_map_from_block_range_roots(up_to)
176176
.await?;
177-
let discriminant_new = self.mk_map_pool.discriminant()? + 1;
178-
self.mk_map_pool.set_discriminant(discriminant_new)?;
179-
self.mk_map_pool.clear();
180-
(1..=pool_size)
177+
let mk_maps_new = (1..=pool_size)
181178
.into_par_iter()
182179
.map(|i| {
183180
debug!(
184181
self.logger,
185182
"Prover is computing the Merkle map pool resource {i}/{pool_size}"
186183
);
184+
mk_map_cache.clone()
185+
})
186+
.collect::<Vec<MKMap<_, _>>>();
187+
debug!(self.logger, "Prover is draining the Merkle map pool");
188+
let discriminant_new = self.mk_map_pool.discriminant()? + 1;
189+
self.mk_map_pool.set_discriminant(discriminant_new)?;
190+
self.mk_map_pool.clear();
191+
debug!(
192+
self.logger,
193+
"Prover is giving back new resources to the Merkle map pool"
194+
);
195+
mk_maps_new
196+
.into_iter()
197+
.map(|mk_map| {
187198
self.mk_map_pool
188-
.give_back_resource(mk_map_cache.clone(), discriminant_new)
199+
.give_back_resource(mk_map, discriminant_new)
189200
})
190-
.collect::<StdResult<()>>()?;
201+
.collect::<StdResult<Vec<_>>>()?;
191202
info!(
192203
self.logger,
193204
"Prover completed computing the Merkle map pool resource of size {pool_size}"

0 commit comments

Comments
 (0)