Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change(state): Write non-finalized blocks to the state in a separate thread, to avoid network and RPC hangs #5257

Merged
merged 120 commits into from
Oct 11, 2022
Merged
Show file tree
Hide file tree
Changes from 119 commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
0d43b69
Add a new block commit task and channels, that don't do anything yet
teor2345 Sep 12, 2022
63486a1
Add last_block_hash_sent to the state service, to avoid database acce…
teor2345 Sep 13, 2022
c819fb2
Update last_block_hash_sent regardless of commit errors
teor2345 Sep 13, 2022
5c8af25
Rename a field to StateService.max_queued_finalized_height
teor2345 Sep 13, 2022
5ea30f7
Commit finalized blocks to the state in a separate task
teor2345 Sep 13, 2022
1ba6e5b
Check for panics in the block write task
teor2345 Sep 14, 2022
a34032d
Wait for the block commit task in tests, and check for errors
teor2345 Sep 14, 2022
2479be0
Always run a proptest that sleeps once
teor2345 Sep 14, 2022
725adec
Add extra debugging to state shutdowns
teor2345 Sep 14, 2022
9dd5e07
Work around a RocksDB shutdown bug
teor2345 Sep 14, 2022
bbd44b8
Close the finalized block channel when we're finished with it
teor2345 Sep 15, 2022
71f4a59
Only reset state queue once per error
teor2345 Sep 15, 2022
932d9b4
Update some TODOs
teor2345 Sep 15, 2022
d8c63d3
Add a module doc comment
teor2345 Sep 15, 2022
d051464
Drop channels and check for closed channels in the block commit task
teor2345 Sep 15, 2022
1d5455e
Close state channels and tasks on drop
teor2345 Sep 15, 2022
de6ff83
Remove some duplicate fields across StateService and ReadStateService
teor2345 Sep 15, 2022
406fcc2
Try tweaking the shutdown steps
teor2345 Sep 15, 2022
01a4a79
Update and clarify some comments
teor2345 Sep 16, 2022
863bb74
Clarify another comment
teor2345 Sep 16, 2022
6ede492
Don't try to cancel RocksDB background work on drop
teor2345 Sep 16, 2022
1657f28
Fix up some comments
teor2345 Sep 16, 2022
6a50d0e
Remove some duplicate code
teor2345 Sep 16, 2022
439c3dd
Remove redundant workarounds for shutdown issues
teor2345 Sep 16, 2022
e87dd1d
Remode a redundant channel close in the block commit task
teor2345 Sep 20, 2022
04be50b
Remove a mistaken `!force` shutdown condition
teor2345 Sep 20, 2022
cd9bd54
Remove duplicate force-shutdown code and explain it better
teor2345 Sep 20, 2022
622dd5c
Improve RPC error logging
teor2345 Sep 20, 2022
3e95876
Wait for chain tip updates in the RPC tests
teor2345 Sep 20, 2022
82f355a
Wait 2 seconds for chain tip updates before skipping them
teor2345 Sep 20, 2022
199df99
Remove an unnecessary block_in_place()
teor2345 Sep 20, 2022
f597518
Fix some test error messages that were changed by earlier fixes
teor2345 Sep 21, 2022
4710047
Expand some comments, fix typos
teor2345 Sep 21, 2022
0531cd2
Actually drop children of failed blocks
teor2345 Sep 21, 2022
ef35dea
Explain why we drop descendants of failed blocks
teor2345 Sep 21, 2022
61f33f6
Clarify a comment
teor2345 Sep 23, 2022
8029e74
Wait for chain tip updates in a failing test on macOS
teor2345 Sep 23, 2022
5af44a2
Clean duplicate finalized blocks when the non-finalized state activates
teor2345 Sep 23, 2022
b43c433
Send an error when receiving a duplicate finalized block
teor2345 Sep 23, 2022
6eaafc1
Update checkpoint block behaviour, document its consensus rule
teor2345 Sep 23, 2022
9be4996
Wait for chain tip changes in inbound_block_height_lookahead_limit test
teor2345 Sep 23, 2022
b66ef8f
Wait for the genesis block to commit in the fake peer set mempool tests
teor2345 Sep 26, 2022
83a7f2f
Disable unreliable mempool verification check in the send transaction…
teor2345 Sep 27, 2022
8e137ea
Appease rustfmt
teor2345 Sep 27, 2022
04a5808
Use clear_finalized_block_queue() everywhere that blocks are dropped
teor2345 Sep 27, 2022
96d3966
Document how Finalized and NonFinalized clones are different
teor2345 Sep 27, 2022
90b4089
sends non-finalized blocks to the block write task
arya2 Sep 26, 2022
8e10cfc
passes ZebraDb to commit_new_chain, commit_block, and no_duplicates_i…
arya2 Sep 26, 2022
37cf0cc
Update zebra-state/src/service/write.rs
arya2 Sep 27, 2022
a27aa3f
updates comments, renames send_process_queued, other minor cleanup
arya2 Sep 27, 2022
6edd399
Merge branch 'non-finalized-block-commit-channel' of github.com:Zcash…
arya2 Sep 27, 2022
3703a2e
update assert_block_can_be_validated comment
arya2 Sep 27, 2022
c2659b1
removes `mem` field from StateService
arya2 Sep 28, 2022
bc607c5
removes `disk` field from StateService and updates block_iter to use …
arya2 Sep 28, 2022
f2c458d
updates tests that use the disk to use read_service.db instead
arya2 Sep 28, 2022
7631648
moves best_tip to a read fn and returns finalized & non-finalized sta…
arya2 Sep 28, 2022
db31156
changes `contextual_validity` to get the network from the finalized_s…
arya2 Sep 28, 2022
d6327fa
swaps out StateService with FinalizedState and NonFinalizedState in t…
arya2 Sep 28, 2022
0adfe48
adds NotReadyToBeCommitted error and returns it from validate_and_com…
arya2 Sep 28, 2022
c41f8a5
removes NonFinalizedWriteCmd and calls, moves update_latest_channels …
arya2 Sep 28, 2022
93ed20e
makes parent_errors_map an indexmap
arya2 Sep 28, 2022
52a7258
clears non-finalized block queue when the receiver is dropped and whe…
arya2 Sep 28, 2022
caad6cd
sends non-finalized blocks to the block write task
arya2 Sep 26, 2022
b7e1fd4
passes ZebraDb to commit_new_chain, commit_block, and no_duplicates_i…
arya2 Sep 26, 2022
9be511c
updates comments, renames send_process_queued, other minor cleanup
arya2 Sep 27, 2022
fc5f258
Update zebra-state/src/service/write.rs
arya2 Sep 27, 2022
a8c7cd4
update assert_block_can_be_validated comment
arya2 Sep 27, 2022
64f1004
removes `mem` field from StateService
arya2 Sep 28, 2022
82abb0a
removes `disk` field from StateService and updates block_iter to use …
arya2 Sep 28, 2022
c0805e6
updates tests that use the disk to use read_service.db instead
arya2 Sep 28, 2022
5406d5f
moves best_tip to a read fn and returns finalized & non-finalized sta…
arya2 Sep 28, 2022
eddfd26
changes `contextual_validity` to get the network from the finalized_s…
arya2 Sep 28, 2022
9a32357
swaps out StateService with FinalizedState and NonFinalizedState in t…
arya2 Sep 28, 2022
14460cf
adds NotReadyToBeCommitted error and returns it from validate_and_com…
arya2 Sep 28, 2022
76ceb6b
removes NonFinalizedWriteCmd and calls, moves update_latest_channels …
arya2 Sep 28, 2022
a9d4e05
makes parent_errors_map an indexmap
arya2 Sep 28, 2022
3aad1b7
clears non-finalized block queue when the receiver is dropped and whe…
arya2 Sep 28, 2022
dd48089
Merge branch 'non-finalized-block-commit-channel' of github.com:Zcash…
arya2 Sep 28, 2022
5706784
Merge branch 'main' into non-finalized-block-commit-channel
arya2 Sep 28, 2022
7ac64be
removes duplicate field definitions on StateService that were a resul…
arya2 Sep 28, 2022
6c4c7e8
update NotReadyToBeCommitted error message
arya2 Sep 28, 2022
cbd8cdb
Appear rustfmt
arya2 Sep 28, 2022
580e1bd
Fix doc links
teor2345 Sep 29, 2022
ff53e74
Rename a function to initial_contextual_validity()
teor2345 Sep 29, 2022
0fc7dfe
Do error tasks on Err, and success tasks on Ok
teor2345 Sep 29, 2022
d767001
Simplify parent_error_map truncation
teor2345 Sep 29, 2022
48dbd3c
Rewrite best_tip() to use tip()
teor2345 Sep 29, 2022
5dba5b2
Rename latest_mem() to latest_non_finalized_state()
teor2345 Sep 29, 2022
d868318
Simplify latest_non_finalized_state() using a new WatchReceiver API
teor2345 Sep 29, 2022
2765681
Expand some error messages
teor2345 Sep 29, 2022
22a78cd
Send the result after updating the channels, and document why
teor2345 Sep 29, 2022
17ee713
wait for chain_tip_update before cancelling download in mempool_cance…
arya2 Sep 29, 2022
bf125ac
adds `sent_non_finalized_block_hashes` field to StateService
arya2 Sep 30, 2022
70beeb0
adds batched sent_hash insertions and checks sent hashes in queue_and…
arya2 Oct 3, 2022
b8cc17a
check that the `curr_buf` in SentHashes is not empty before pushing i…
arya2 Oct 3, 2022
a3da5c2
Apply suggestions from code review
arya2 Oct 3, 2022
8ef23e4
Fix rustfmt
teor2345 Oct 3, 2022
6bc77f5
Check for finalized block heights using zs_contains()
teor2345 Oct 3, 2022
9e0076f
Merge branch 'main' into non-finalized-block-commit-channel
mergify[bot] Oct 4, 2022
e447032
Merge branch 'main' into non-finalized-block-commit-channel
mergify[bot] Oct 4, 2022
daa9a0a
adds known_utxos field to SentHashes
arya2 Oct 4, 2022
6e1fb1d
updates comment on SentHashes.add method
arya2 Oct 4, 2022
a999432
Apply suggestions from code review
arya2 Oct 4, 2022
c9ae0b7
return early when there's a duplicate hash in QueuedBlocks.queue inst…
arya2 Oct 5, 2022
8444162
Merge branch 'main' into non-finalized-block-commit-channel
arya2 Oct 5, 2022
0b675cc
Merge branch 'main' into non-finalized-block-commit-channel
mergify[bot] Oct 6, 2022
28fe080
Merge branch 'main' into non-finalized-block-commit-channel
teor2345 Oct 7, 2022
29a8ada
Make finalized UTXOs near the final checkpoint available for full blo…
teor2345 Oct 7, 2022
56cfa72
Replace a checkpoint height literal with the actual config
teor2345 Oct 7, 2022
9c3cd2f
Update mainnet and testnet checkpoints - 7 October 2022
teor2345 Oct 7, 2022
29e765f
Fix some state service init arguments
teor2345 Oct 7, 2022
2e3eaef
Allow more lookahead in the downloader, but less lookahead in the syncer
teor2345 Oct 7, 2022
987d21d
Add the latest config to the tests, and fix the latest config check
teor2345 Oct 7, 2022
a1fcf41
Increase the number of finalized blocks checked for non-finalized blo…
teor2345 Oct 7, 2022
e3290df
fix(log): reduce verbose logs for block commits (#5348)
teor2345 Oct 7, 2022
8eea77a
Increase block verify timeout
teor2345 Oct 7, 2022
7a926b1
Merge branch 'main' into non-finalized-block-commit-channel
teor2345 Oct 11, 2022
74b29be
Work around a known block timeout bug by using a shorter timeout
teor2345 Oct 11, 2022
a0a65b6
Merge branch 'checkpoints-2022-10-07' into non-finalized-block-commit…
teor2345 Oct 11, 2022
e9a5dbd
Merge branch 'main' into non-finalized-block-commit-channel
mergify[bot] Oct 11, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 18 additions & 9 deletions zebra-consensus/src/chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,15 +235,7 @@ where
let transaction = Buffer::new(BoxService::new(transaction), VERIFIER_BUFFER_BOUND);

// block verification

let list = CheckpointList::new(network);

let max_checkpoint_height = if config.checkpoint_sync {
list.max_height()
} else {
list.min_height_in_range(network.mandatory_checkpoint_height()..)
.expect("hardcoded checkpoint list extends past canopy activation")
};
let (list, max_checkpoint_height) = init_checkpoint_list(config, network);

let tip = match state_service
.ready()
Expand Down Expand Up @@ -275,3 +267,20 @@ where
max_checkpoint_height,
)
}

/// Parses the checkpoint list for `network` and `config`.
/// Returns the checkpoint list and maximum checkpoint height.
pub fn init_checkpoint_list(config: Config, network: Network) -> (CheckpointList, Height) {
// TODO: Zebra parses the checkpoint list twice at startup.
// Instead, cache the checkpoint list for each `network`.
let list = CheckpointList::new(network);

let max_checkpoint_height = if config.checkpoint_sync {
list.max_height()
} else {
list.min_height_in_range(network.mandatory_checkpoint_height()..)
.expect("hardcoded checkpoint list extends past canopy activation")
};

(list, max_checkpoint_height)
}
581 changes: 581 additions & 0 deletions zebra-consensus/src/checkpoint/main-checkpoints.txt

Large diffs are not rendered by default.

84 changes: 84 additions & 0 deletions zebra-consensus/src/checkpoint/test-checkpoints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5085,3 +5085,87 @@
2033600 00178c60cfd538584aab9e1a215f6e22c193f5f1c0bd984305be58d60ebbc799
2034000 00da910d76185c236bb224b260d3302d747a08f4ee2e4445101c1dc107bbd8b0
2034400 0091f576c32361d10617667c0d9be272b10c1d18d0df25304bff7a8572bb6044
2034800 001e6a21fb50a3cacf988f90356b0366ff48a7ce24841c25d6f9267cafffa27a
2035200 003300776534f6d3a1937f1c1701fe88dc1396d5fa788e2571b017dc3da6a093
2035600 0021ab4e6cfa94e65ccbe834f0ede89f63c4864afda70b57c18f269fa77d3be8
2036000 0007d559220b99f6e29e32895b9c565704ec61e6d7e14d2fdb662bfe6014b829
2036400 001b706d5fd4da4c1b813f8c94941f4b7b5791d1f971758a75d9d7ac5a6e41b3
2036800 003a3aa7d3aa02416cb1dba82b88b5166b46b2977f871f7b1c8bd8857bd3902f
2037200 000faa7c1438ccf0bb2ddda6ff023312b7843228df27be2bfe236f346d7f4b87
2037600 0040f0cc29f01e9e945507f60e7f8c532f22b10f5b4075448709592c30312174
2038000 00251e2a9458e5282abaee9f2b361d4c2d06e9b7d56f1f66bdf4e960b322a323
2038400 0027648723285e82e743d38f432b889e7668d3aa0e77ff8e6e8b8eb9ce2be550
2038800 0045be9887bd216176bda10f8efb97212479ce99cf17db37f25f790cffd06669
2039200 000546c4542020157da0f40516f82aebdc760539b21915ad6247b240e83027fc
2039600 0010dd5c86acf59d5bf52697ebae06f8eb9603188235168be94c22309aa85001
2040000 000eb52c4e328d62f1534aa382e8694e76a5a2390322f83e33e503b5dc7ae06f
2040400 0006a9c1958467b0bbcf805228fcf29a3b3e5a20da96e91133f0fcbe63720c04
2040800 0033c40dfc5144e8957b1162988a628384d7921ae6a00c1bae10ccc554b8feaf
2041200 001a4ca772f815ca48f6fdf33a7a8a336f81a775e9870bcc897fd64ed45e1eb4
2041600 002900d746f67012caef8fbf9df12dd8fb0db2ae1314ada0a6f2aed43811b26c
2042000 00272f520bdf363a5827bf2f0012889b3687330ea6894afeb55d4509e3ed3607
2042400 0026eaa3a98ef58b2b888111212d6a3e2a4e086990890de64d0c36b8752348cf
2042800 00644c27b355e78fb4ebb1ecb46982d6a304f078bbc001758441c60525e29d95
2043200 003a4286ee6e2b81df21f568748314109a9525fc5ddbdd79f4db8c27fc5e7efe
2043600 002e357cb60df11b90b657cd5dee47025dfbe71d7e1db17286bd73fc7547024a
2044000 008aa78c9a9f5c4800bfe96e664aa49788bbb52a57eecb22cbd5f194a8430f8a
2044400 0028cf33dc54a3d3320c6eb8997a12cc81f199325243ffb46d1243ad52d36881
2044800 002e00ebe1faddf6fa8918918acc9179b8757e9193a36ba75eda2ea83a77db1d
2045200 001b530672e8eea9784ef3d56febfe77c0f91fcf69209ee90277684290710aeb
2045600 006ab918afe279e862c909abe188718c4535a41fa9336488d8f98a0a9b7784e7
2046000 0003310d3c4b2cfd512df1f791179a63cfcd98f14224a99fdeeec43cfb949fd1
2046400 003a66bc9263bacd6b29421a5d063e4084d05158bc84b18b7d74eaaf1cb3c387
2046800 004e39aa04132ddf44f9ffbd184c6dea0d8b4eafe9b21d936f1390bcd533083e
2047200 0021fd7bc1ebf8eacc8fb1654baedcf886bacbb9303d2b8a25874d43e3633fed
2047600 001d8ce8cd3df20b140cfdf24acac6aba4230c4da1ab0d2331f416c1edf64964
2048000 00178fc5f25ca45272e0af89e5df2a7be9c87b7e8108c64693b9c6facdc199cc
2048400 003f584ca1395c5df8c8088bf55cf681df26c5899599f8fd3f6f81e0384a4e97
2048800 0022c3f3096e98e65d410db2f11aaf65a6162dfbc793cbb535878c43ac2feab4
2049200 00314fb0010a845e070c1b994cc3015da12374e4c607d83de075defec3390c83
2049600 0012f0590013a0f0db12aab95d741ffcdcbf839a487b8f0600d4a29466e6fbe6
2050000 002655de7a40e37d3801ff41d427c4b1bb192e0b788dc8813fc961f0bf0afb8f
2050400 002c4697969f27e375520e52a7443450e81bc7b792a9b84c08814eb5a2cb0991
2050800 001687b95a298ba4ee0009e453f632943f521d86566e9e37af6ee1958f401552
2051200 002a2ef18bdae38ae945507aa3aa7433113a87463e67a8b38a34337d67a59edf
2051600 005084be0bc07a9bbe40622877b1a9b4fef9ce9d9acfb697af575ef6f4b1e6fc
2052000 003c71deab944e87704905f1733deda5a76f745e9f97ef2cdd0f209feb99beaf
2052400 0018d6fca006b35c05e3def63356a194f4f77ecd5af6b5bc3a230d2caf2003f3
2052800 002825cb69adc0e8e75118e511c3a5ff9643a1f058123e32977b92c9cf352438
2053200 00817bb125f3cdd6998a87cba0cd774ec01cf699019ef09789883240f9475eae
2053600 001a0a98c27b408fd12fd1f2444303abc6ddb0ca0a18a882f350aa1106420aa9
2054000 0017590fe16f3be8f00d5cf0b12ea6a375fb253d8c7ac5d5f7308c634c12c80b
2054400 004434a30ee4ad95dda82837521f5f307dd2658a6cd4f2228b2601998694edb9
2054800 0005bd116d0cb8fcc0c24bc823e1c3f991e0f78d0d50d4aaf72bac9b00652f94
2055200 00128ce0626c48599f11bd08ade3a438cd9b9e5dbb15e2ec52d1928f61740a7d
2055600 00093d79f8dad1ece8c6d57d6b7af56336a16afcbaae333c87b12a32daf4cb84
2056000 005ce429a9b81ecb7707bd9f7dbb614589b4903c88e8b84715a4106a223fb9fa
2056400 001a5bba505ffebb1979c7a39aa98cb345fb367cd82e51d2bd66aa7e886d32d3
2056800 003167eb817eaf67b80ccf32634e21f6bbf3a6464fa488d5db0aef4fb9b382a3
2057200 001ef54d3b3b876881929e8e4bf05e6b4824d7cf8588e69b90200ed74340db2c
2057600 001db360e3a95fcf4719bda2fbdfec0ded8dcba815cfe2df7f4383a96c8be07d
2058000 0034bcc1e62b352b19f9b81e3365cde809973d0ee951d515787c44583e33f860
2058400 0000611bd2bf67d6640a56e613ad62faa2939cc5fef9b5b52b7d1e52c32188d8
2058800 000b40054df8618bad75f2f164a88f214b183f3864f16572a8c5d46f76d09f61
2059200 0027d9c116c4c1fe881ac57e97608ace8645aab85c855d4308f89271687f63a9
2059600 002d2141fe726fbcd17d5e178bc262012a7bd9846c9380e630cb1f93a82e4478
2060000 0009b6f13f41de7235e23e809daf586b56996b3f948a7de1a1f234e2cddc00f6
2060400 005e1b69fc0ea32b22adbc418d80afc28a20b34a91ab6e751e81e69cf09da06e
2060800 000f47d1eb8ee2146bb1b3a30ddcb49cd183edbc3527369c2169a7f6e82ac2e3
2061200 003e50a781734613700b7938eedcb3e5b2319669a4eedc80374f66b895e4adf2
2061600 01320e00199b50eaffee1a1f1011bda432f9e432c2e4554ca112f87e499d3aa6
2062000 00017aa7515c3a421b5abe7285a75acc819f6304ade62905207b87a10fe82094
2062400 000d65d68f7b11b975ccf4699534f69f6c729fd8903381a4dd904b82bbaef367
2062800 077f08ad36527df22617dac9cc3cae1bbc36d2113da03dcfb9db3669dde6ed4f
2063200 00c533a76682a672f3ff9391004ee05d404ba26d67723ffc0d055e016d4c1bd1
2063600 00846c18f6d3434ffec7dea8ebc03021f2b693f761a2b6c034b8c6b7c4dc0bd6
2064000 0095a37e4eec0d4c4db17a794eb391fa97e78941c7465cf0d910ba4af0f71445
2064400 00418f3451053cf48088a5aa2495fc46023428ee4c323f884ce82fbfc62c892b
2064800 000f995c27ef8c18f93cc607ee293ec348064490facf67ba3c36316fe13cb117
2065200 0034e6f080f2f856e3e3335dff1fdb53924dbca0a7fe473d0e16959fe117e044
2065600 00650dfe83222105594c89bfba89072c9bc5a1835436ae8adcd7a87ba939baa9
2066000 0063c6aa0e81d7f6301aa273ef144611cd7064fe67b77483576f85e36f2808f7
2066400 01909fc220b9531f080dc6d2b6b199694fade497794eddb7b54f8c252edba7c6
2066800 00f1bbceab9dc2b8e58cf6f71dda9e93229f14f2f12c15f6e473d1498190cfc0
2067200 0194c44fa83afb8e827205f2fc24a9be1aa96ec130b64a2330d86fdaae2fb9bc
2067600 00f198f416521f8c33532b1e332354fbded8aead94483c5a915b704bf5655c6d
2068000 007d58c30f8a048420225d0f761f8ab20992b939ed3ae9e6dca28b5e6260f9f1
1 change: 1 addition & 0 deletions zebra-state/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dirs = "4.0.0"
displaydoc = "0.2.3"
futures = "0.3.24"
hex = "0.4.3"
indexmap = "1.9.1"
itertools = "0.10.5"
lazy_static = "1.4.0"
metrics = "0.20.1"
Expand Down
4 changes: 4 additions & 0 deletions zebra-state/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ pub struct CommitBlockError(#[from] ValidateContextError);
#[non_exhaustive]
#[allow(missing_docs)]
pub enum ValidateContextError {
#[error("block parent not found in any chain")]
#[non_exhaustive]
NotReadyToBeCommitted,

#[error("block height {candidate_height:?} is lower than the current finalized height {finalized_tip_height:?}")]
#[non_exhaustive]
OrphanedBlock {
Expand Down
Loading