Skip to content

Commit 3f6a22d

Browse files
committed
fix: avoid pool acquire timeout during cache computation
1 parent e38d6b7 commit 3f6a22d

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

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)