Skip to content

Commit c48413a

Browse files
committed
Fix error processing in Collator::process_optimistic_prev_block
1 parent 3f216b6 commit c48413a

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

validator/impl/collator-impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class Collator final : public td::actor::Actor {
122122
private:
123123
void start_up() override;
124124
void load_prev_states_blocks();
125-
void process_optimistic_prev_block();
125+
bool process_optimistic_prev_block();
126126
void alarm() override;
127127
int verbosity{3 * 0};
128128
int verify{1};

validator/impl/collator.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,9 @@ void Collator::start_up() {
241241
if (optimistic_prev_block_.is_null()) {
242242
load_prev_states_blocks();
243243
} else {
244-
process_optimistic_prev_block();
244+
if (!process_optimistic_prev_block()) {
245+
return;
246+
}
245247
}
246248
if (is_hardfork_) {
247249
LOG(WARNING) << "generating a hardfork block";
@@ -324,15 +326,14 @@ void Collator::load_prev_states_blocks() {
324326
/**
325327
* Write optimistic prev block as block data, load previous state to apply Merkle update to it
326328
*/
327-
void Collator::process_optimistic_prev_block() {
329+
bool Collator::process_optimistic_prev_block() {
328330
std::vector<BlockIdExt> prev_prev;
329331
BlockIdExt mc_blkid;
330332
bool after_split;
331333
auto S = block::unpack_block_prev_blk_try(optimistic_prev_block_->root_cell(), optimistic_prev_block_->block_id(),
332334
prev_prev, mc_blkid, after_split);
333335
if (S.is_error()) {
334-
fatal_error(S.move_as_error_prefix("failed to unpack optimistic prev block: "));
335-
return;
336+
return fatal_error(S.move_as_error_prefix("failed to unpack optimistic prev block: "));
336337
}
337338
// 3.1. load state
338339
if (prev_prev.size() == 1) {
@@ -366,6 +367,7 @@ void Collator::process_optimistic_prev_block() {
366367
auto token = perf_log_.start_action(PSTRING() << "opt wait_block_data");
367368
td::actor::send_closure_later(actor_id(this), &Collator::after_get_block_data, 0, optimistic_prev_block_,
368369
std::move(token));
370+
return true;
369371
}
370372

371373
/**

0 commit comments

Comments
 (0)