mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
kernel: Remove epilogue in bitcoin-chainstate
There is no need to flush the background callbacks, since the immediate task runner is used for the validation signals, which does not have any pending callbacks. This allows for removal of the epilogue goto.
This commit is contained in:
parent
e7087d3da4
commit
eec7c49cf7
1 changed files with 7 additions and 12 deletions
|
@ -64,10 +64,10 @@ int main(int argc, char* argv[])
|
|||
|
||||
// SETUP: Context
|
||||
kernel::Context kernel_context{};
|
||||
// We can't use a goto here, but we can use an assert since none of the
|
||||
// things instantiated so far requires running the epilogue to be torn down
|
||||
// properly
|
||||
assert(kernel::SanityChecks(kernel_context));
|
||||
if (!kernel::SanityChecks(kernel_context)) {
|
||||
std::cerr << "Failed sanity check.";
|
||||
return 1;
|
||||
}
|
||||
|
||||
ValidationSignals validation_signals{std::make_unique<util::ImmediateTaskRunner>()};
|
||||
|
||||
|
@ -132,12 +132,12 @@ int main(int argc, char* argv[])
|
|||
auto [status, error] = node::LoadChainstate(chainman, cache_sizes, options);
|
||||
if (status != node::ChainstateLoadStatus::SUCCESS) {
|
||||
std::cerr << "Failed to load Chain state from your datadir." << std::endl;
|
||||
goto epilogue;
|
||||
return 1;
|
||||
} else {
|
||||
std::tie(status, error) = node::VerifyLoadedChainstate(chainman, options);
|
||||
if (status != node::ChainstateLoadStatus::SUCCESS) {
|
||||
std::cerr << "Failed to verify loaded Chain state from your datadir." << std::endl;
|
||||
goto epilogue;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,7 @@ int main(int argc, char* argv[])
|
|||
BlockValidationState state;
|
||||
if (!chainstate->ActivateBestChain(state, nullptr)) {
|
||||
std::cerr << "Failed to connect best block (" << state.ToString() << ")" << std::endl;
|
||||
goto epilogue;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,9 +253,4 @@ int main(int argc, char* argv[])
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
epilogue:
|
||||
// Without this precise shutdown sequence, there will be a lot of nullptr
|
||||
// dereferencing and UB.
|
||||
validation_signals.FlushBackgroundCallbacks();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue