Skip to content

Commit 30df413

Browse files
authored
refactor: receive external block in mine_external methods (#1731)
1 parent 30f67f0 commit 30df413

File tree

3 files changed

+7
-10
lines changed

3 files changed

+7
-10
lines changed

src/bin/importer_offline.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@ fn execute_block_importer(
157157

158158
// re-execute (and import) block
159159
batch_tx_len += block.transactions.len();
160-
executor.execute_external_block(block, &mut receipts)?;
160+
executor.execute_external_block(block.clone(), &mut receipts)?;
161161

162162
// mine and save block
163-
miner.mine_external_and_commit()?;
163+
miner.mine_external_and_commit(block)?;
164164
}
165165
let batch_duration = before_block.elapsed();
166166

src/eth/follower/importer/importer.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ impl Importer {
180180
let mut receipts = ExternalReceipts::from(receipts);
181181
#[cfg(feature = "metrics")]
182182
let receipts_len = receipts.len();
183-
if let Err(e) = executor.execute_external_block(block, &mut receipts) {
183+
if let Err(e) = executor.execute_external_block(block.clone(), &mut receipts) {
184184
let message = GlobalState::shutdown_from(TASK_NAME, "failed to reexecute external block");
185185
return log_and_err!(reason = e, message);
186186
};
@@ -200,7 +200,7 @@ impl Importer {
200200
);
201201
}
202202

203-
if let Err(e) = miner.mine_external_and_commit() {
203+
if let Err(e) = miner.mine_external_and_commit(block) {
204204
let message = GlobalState::shutdown_from(TASK_NAME, "failed to mine external block");
205205
return log_and_err!(reason = e, message);
206206
};

src/eth/miner/miner.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,17 @@ impl Miner {
237237
}
238238

239239
/// Same as [`Self::mine_external`], but automatically commits the block instead of returning it.
240-
pub fn mine_external_and_commit(&self) -> anyhow::Result<()> {
240+
pub fn mine_external_and_commit(&self, external_block: ExternalBlock) -> anyhow::Result<()> {
241241
let _mine_and_commit_lock = self.locks.mine_and_commit.lock().map_lock_error("mine_external_and_commit")?;
242242

243-
let block = self.mine_external()?;
243+
let block = self.mine_external(external_block)?;
244244
self.commit(block)
245245
}
246246

247247
/// Mines external block and external transactions.
248248
///
249249
/// Local transactions are not allowed to be part of the block.
250-
pub fn mine_external(&self) -> anyhow::Result<Block> {
250+
pub fn mine_external(&self, external_block: ExternalBlock) -> anyhow::Result<Block> {
251251
// track
252252
#[cfg(feature = "tracing")]
253253
let _span = info_span!("miner::mine_external", block_number = field::Empty).entered();
@@ -258,9 +258,6 @@ impl Miner {
258258
// mine block
259259
let block = self.storage.finish_pending_block()?;
260260
Span::with(|s| s.rec_str("block_number", &block.header.number));
261-
let Some(external_block) = block.external_block else {
262-
return log_and_err!("failed to mine external block because there is no external block being reexecuted");
263-
};
264261

265262
// mine transactions
266263
let mut external_txs = Vec::with_capacity(block.transactions.len());

0 commit comments

Comments
 (0)