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

feat(beacon-node): add block error metric to gossip handlers #5495

Merged
merged 6 commits into from
May 25, 2023

Conversation

matthewkeil
Copy link
Member

Motivation

This PR is related to #5481 and captures gossip block error metrics and adds them to a new dashboard. Will help to debug poorly gossiped blocks by peers by exposing the slot, peerId, time seen and error that was raised.

Description

Closes #5481

@github-actions
Copy link
Contributor

github-actions bot commented May 15, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8962008 Previous: 118f7b9 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 593.81 us/op 645.00 us/op 0.92
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 51.317 us/op 50.532 us/op 1.02
BLS verify - blst-native 1.2424 ms/op 1.2417 ms/op 1.00
BLS verifyMultipleSignatures 3 - blst-native 2.4944 ms/op 2.5166 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst-native 5.3744 ms/op 5.4125 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst-native 19.463 ms/op 19.570 ms/op 0.99
BLS aggregatePubkeys 32 - blst-native 25.914 us/op 26.032 us/op 1.00
BLS aggregatePubkeys 128 - blst-native 101.54 us/op 102.21 us/op 0.99
getAttestationsForBlock 60.901 ms/op 56.477 ms/op 1.08
isKnown best case - 1 super set check 268.00 ns/op 266.00 ns/op 1.01
isKnown normal case - 2 super set checks 263.00 ns/op 252.00 ns/op 1.04
isKnown worse case - 16 super set checks 255.00 ns/op 246.00 ns/op 1.04
CheckpointStateCache - add get delete 6.0090 us/op 5.4830 us/op 1.10
validate gossip signedAggregateAndProof - struct 2.8290 ms/op 2.8301 ms/op 1.00
validate gossip attestation - struct 1.3505 ms/op 1.3854 ms/op 0.97
pickEth1Vote - no votes 1.3921 ms/op 1.2989 ms/op 1.07
pickEth1Vote - max votes 11.060 ms/op 10.221 ms/op 1.08
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.7570 ms/op 9.2327 ms/op 1.06
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.427 ms/op 14.044 ms/op 1.24
pickEth1Vote - Eth1Data fastSerialize value x2048 736.22 us/op 659.13 us/op 1.12
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.4889 ms/op 4.7311 ms/op 1.37
bytes32 toHexString 627.00 ns/op 523.00 ns/op 1.20
bytes32 Buffer.toString(hex) 411.00 ns/op 347.00 ns/op 1.18
bytes32 Buffer.toString(hex) from Uint8Array 626.00 ns/op 595.00 ns/op 1.05
bytes32 Buffer.toString(hex) + 0x 421.00 ns/op 372.00 ns/op 1.13
Object access 1 prop 0.19100 ns/op 0.19000 ns/op 1.01
Map access 1 prop 0.16900 ns/op 0.16600 ns/op 1.02
Object get x1000 6.6420 ns/op 6.6520 ns/op 1.00
Map get x1000 0.66800 ns/op 0.60800 ns/op 1.10
Object set x1000 67.155 ns/op 53.862 ns/op 1.25
Map set x1000 54.839 ns/op 44.386 ns/op 1.24
Return object 10000 times 0.26550 ns/op 0.24400 ns/op 1.09
Throw Error 10000 times 4.4640 us/op 4.3004 us/op 1.04
fastMsgIdFn sha256 / 200 bytes 3.7230 us/op 3.5640 us/op 1.04
fastMsgIdFn h32 xxhash / 200 bytes 320.00 ns/op 300.00 ns/op 1.07
fastMsgIdFn h64 xxhash / 200 bytes 468.00 ns/op 420.00 ns/op 1.11
fastMsgIdFn sha256 / 1000 bytes 12.062 us/op 12.018 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 454.00 ns/op 414.00 ns/op 1.10
fastMsgIdFn h64 xxhash / 1000 bytes 542.00 ns/op 492.00 ns/op 1.10
fastMsgIdFn sha256 / 10000 bytes 106.05 us/op 104.83 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 2.0050 us/op 1.9510 us/op 1.03
fastMsgIdFn h64 xxhash / 10000 bytes 1.4350 us/op 1.4330 us/op 1.00
enrSubnets - fastDeserialize 64 bits 1.5460 us/op 1.3990 us/op 1.11
enrSubnets - ssz BitVector 64 bits 606.00 ns/op 526.00 ns/op 1.15
enrSubnets - fastDeserialize 4 bits 191.00 ns/op 190.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 597.00 ns/op 539.00 ns/op 1.11
prioritizePeers score -10:0 att 32-0.1 sync 2-0 134.11 us/op 117.97 us/op 1.14
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 158.08 us/op 142.14 us/op 1.11
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 202.47 us/op 187.01 us/op 1.08
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 385.32 us/op 340.68 us/op 1.13
prioritizePeers score 0:0 att 64-1 sync 4-1 412.27 us/op 394.25 us/op 1.05
array of 16000 items push then shift 1.7205 us/op 1.6654 us/op 1.03
LinkedList of 16000 items push then shift 9.4430 ns/op 9.0300 ns/op 1.05
array of 16000 items push then pop 107.39 ns/op 111.08 ns/op 0.97
LinkedList of 16000 items push then pop 9.1940 ns/op 8.8840 ns/op 1.03
array of 24000 items push then shift 2.5809 us/op 2.4288 us/op 1.06
LinkedList of 24000 items push then shift 9.6640 ns/op 9.2030 ns/op 1.05
array of 24000 items push then pop 97.770 ns/op 88.281 ns/op 1.11
LinkedList of 24000 items push then pop 9.5990 ns/op 8.9620 ns/op 1.07
intersect bitArray bitLen 8 14.299 ns/op 13.851 ns/op 1.03
intersect array and set length 8 96.638 ns/op 101.97 ns/op 0.95
intersect bitArray bitLen 128 48.909 ns/op 45.646 ns/op 1.07
intersect array and set length 128 1.1809 us/op 1.1651 us/op 1.01
Buffer.concat 32 items 2.7980 us/op 3.1870 us/op 0.88
Uint8Array.set 32 items 2.5140 us/op 3.2070 us/op 0.78
pass gossip attestations to forkchoice per slot 2.4474 ms/op 2.9799 ms/op 0.82
computeDeltas 3.3616 ms/op 3.1512 ms/op 1.07
computeProposerBoostScoreFromBalances 1.8462 ms/op 1.8154 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei normalcase 3.4824 ms/op 2.2126 ms/op 1.57
altair processAttestation - 250000 vs - 7PWei worstcase 4.3692 ms/op 4.3670 ms/op 1.00
altair processAttestation - setStatus - 1/6 committees join 147.06 us/op 145.24 us/op 1.01
altair processAttestation - setStatus - 1/3 committees join 290.08 us/op 293.89 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 384.71 us/op 437.64 us/op 0.88
altair processAttestation - setStatus - 2/3 committees join 482.14 us/op 478.63 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 694.10 us/op 674.80 us/op 1.03
altair processAttestation - setStatus - 100% committees join 795.19 us/op 811.27 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 19.770 ms/op 17.025 ms/op 1.16
altair processBlock - 250000 vs - 7PWei normalcase hashState 28.075 ms/op 25.174 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase 56.872 ms/op 54.334 ms/op 1.05
altair processBlock - 250000 vs - 7PWei worstcase hashState 78.448 ms/op 71.365 ms/op 1.10
phase0 processBlock - 250000 vs - 7PWei normalcase 2.6732 ms/op 2.3557 ms/op 1.13
phase0 processBlock - 250000 vs - 7PWei worstcase 32.345 ms/op 32.155 ms/op 1.01
altair processEth1Data - 250000 vs - 7PWei normalcase 568.61 us/op 637.63 us/op 0.89
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.1610 us/op 11.562 us/op 0.79
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 28.294 us/op 25.363 us/op 1.12
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.096 us/op 10.313 us/op 1.08
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.2570 us/op 8.1230 us/op 1.02
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 114.22 us/op 104.22 us/op 1.10
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 777.60 us/op 714.23 us/op 1.09
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.0300 ms/op 914.93 us/op 1.13
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.0058 ms/op 913.89 us/op 1.10
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.3886 ms/op 2.3729 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8084 ms/op 1.7319 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.1687 ms/op 4.0726 ms/op 1.02
Tree 40 250000 create 363.40 ms/op 334.38 ms/op 1.09
Tree 40 250000 get(125000) 196.09 ns/op 192.04 ns/op 1.02
Tree 40 250000 set(125000) 1.0312 us/op 1.0172 us/op 1.01
Tree 40 250000 toArray() 22.141 ms/op 19.596 ms/op 1.13
Tree 40 250000 iterate all - toArray() + loop 22.128 ms/op 21.307 ms/op 1.04
Tree 40 250000 iterate all - get(i) 75.821 ms/op 73.294 ms/op 1.03
MutableVector 250000 create 13.068 ms/op 10.540 ms/op 1.24
MutableVector 250000 get(125000) 6.6270 ns/op 7.2430 ns/op 0.91
MutableVector 250000 set(125000) 273.28 ns/op 256.46 ns/op 1.07
MutableVector 250000 toArray() 3.4321 ms/op 2.7603 ms/op 1.24
MutableVector 250000 iterate all - toArray() + loop 3.6079 ms/op 3.0665 ms/op 1.18
MutableVector 250000 iterate all - get(i) 1.5588 ms/op 1.7405 ms/op 0.90
Array 250000 create 3.3586 ms/op 2.7465 ms/op 1.22
Array 250000 clone - spread 1.1568 ms/op 1.1835 ms/op 0.98
Array 250000 get(125000) 0.59000 ns/op 0.58400 ns/op 1.01
Array 250000 set(125000) 0.66000 ns/op 0.66300 ns/op 1.00
Array 250000 iterate all - loop 85.032 us/op 88.404 us/op 0.96
effectiveBalanceIncrements clone Uint8Array 300000 34.542 us/op 35.693 us/op 0.97
effectiveBalanceIncrements clone MutableVector 300000 360.00 ns/op 400.00 ns/op 0.90
effectiveBalanceIncrements rw all Uint8Array 300000 171.67 us/op 169.43 us/op 1.01
effectiveBalanceIncrements rw all MutableVector 300000 87.519 ms/op 92.619 ms/op 0.94
phase0 afterProcessEpoch - 250000 vs - 7PWei 121.43 ms/op 117.10 ms/op 1.04
phase0 beforeProcessEpoch - 250000 vs - 7PWei 44.966 ms/op 41.452 ms/op 1.08
altair processEpoch - mainnet_e81889 361.85 ms/op 358.35 ms/op 1.01
mainnet_e81889 - altair beforeProcessEpoch 71.591 ms/op 89.756 ms/op 0.80
mainnet_e81889 - altair processJustificationAndFinalization 21.678 us/op 27.113 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 6.2217 ms/op 7.0442 ms/op 0.88
mainnet_e81889 - altair processRewardsAndPenalties 59.196 ms/op 64.241 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 3.2850 us/op 4.7590 us/op 0.69
mainnet_e81889 - altair processSlashings 664.00 ns/op 988.00 ns/op 0.67
mainnet_e81889 - altair processEth1DataReset 566.00 ns/op 923.00 ns/op 0.61
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.5137 ms/op 1.4421 ms/op 1.05
mainnet_e81889 - altair processSlashingsReset 8.5230 us/op 8.1150 us/op 1.05
mainnet_e81889 - altair processRandaoMixesReset 9.9190 us/op 9.3650 us/op 1.06
mainnet_e81889 - altair processHistoricalRootsUpdate 2.4500 us/op 1.8020 us/op 1.36
mainnet_e81889 - altair processParticipationFlagUpdates 3.2280 us/op 5.0800 us/op 0.64
mainnet_e81889 - altair processSyncCommitteeUpdates 1.2220 us/op 1.5570 us/op 0.78
mainnet_e81889 - altair afterProcessEpoch 132.92 ms/op 131.72 ms/op 1.01
phase0 processEpoch - mainnet_e58758 389.55 ms/op 432.50 ms/op 0.90
mainnet_e58758 - phase0 beforeProcessEpoch 155.34 ms/op 139.47 ms/op 1.11
mainnet_e58758 - phase0 processJustificationAndFinalization 19.380 us/op 27.554 us/op 0.70
mainnet_e58758 - phase0 processRewardsAndPenalties 67.447 ms/op 79.418 ms/op 0.85
mainnet_e58758 - phase0 processRegistryUpdates 11.183 us/op 15.474 us/op 0.72
mainnet_e58758 - phase0 processSlashings 527.00 ns/op 1.3260 us/op 0.40
mainnet_e58758 - phase0 processEth1DataReset 589.00 ns/op 1.3740 us/op 0.43
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0505 ms/op 1.9462 ms/op 0.54
mainnet_e58758 - phase0 processSlashingsReset 3.7100 us/op 7.9220 us/op 0.47
mainnet_e58758 - phase0 processRandaoMixesReset 12.753 us/op 11.320 us/op 1.13
mainnet_e58758 - phase0 processHistoricalRootsUpdate 633.00 ns/op 1.8220 us/op 0.35
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.1540 us/op 10.043 us/op 0.51
mainnet_e58758 - phase0 afterProcessEpoch 102.10 ms/op 124.61 ms/op 0.82
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4716 ms/op 2.1224 ms/op 0.69
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.0214 ms/op 3.4400 ms/op 0.59
altair processInactivityUpdates - 250000 normalcase 24.564 ms/op 31.842 ms/op 0.77
altair processInactivityUpdates - 250000 worstcase 29.214 ms/op 30.279 ms/op 0.96
phase0 processRegistryUpdates - 250000 normalcase 7.2900 us/op 8.4670 us/op 0.86
phase0 processRegistryUpdates - 250000 badcase_full_deposits 354.99 us/op 294.33 us/op 1.21
phase0 processRegistryUpdates - 250000 worstcase 0.5 136.92 ms/op 112.04 ms/op 1.22
altair processRewardsAndPenalties - 250000 normalcase 65.676 ms/op 64.931 ms/op 1.01
altair processRewardsAndPenalties - 250000 worstcase 72.025 ms/op 69.922 ms/op 1.03
phase0 getAttestationDeltas - 250000 normalcase 7.9983 ms/op 9.3365 ms/op 0.86
phase0 getAttestationDeltas - 250000 worstcase 8.1053 ms/op 7.2126 ms/op 1.12
phase0 processSlashings - 250000 worstcase 3.4719 ms/op 3.9329 ms/op 0.88
altair processSyncCommitteeUpdates - 250000 209.55 ms/op 196.25 ms/op 1.07
BeaconState.hashTreeRoot - No change 284.00 ns/op 301.00 ns/op 0.94
BeaconState.hashTreeRoot - 1 full validator 52.711 us/op 54.889 us/op 0.96
BeaconState.hashTreeRoot - 32 full validator 598.86 us/op 567.99 us/op 1.05
BeaconState.hashTreeRoot - 512 full validator 5.8643 ms/op 5.5610 ms/op 1.05
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.238 us/op 66.016 us/op 1.05
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0003 ms/op 1.0342 ms/op 0.97
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.036 ms/op 12.983 ms/op 1.00
BeaconState.hashTreeRoot - 1 balances 52.656 us/op 52.538 us/op 1.00
BeaconState.hashTreeRoot - 32 balances 522.53 us/op 504.39 us/op 1.04
BeaconState.hashTreeRoot - 512 balances 5.1260 ms/op 4.5113 ms/op 1.14
BeaconState.hashTreeRoot - 250000 balances 84.825 ms/op 76.428 ms/op 1.11
aggregationBits - 2048 els - zipIndexesInBitList 17.271 us/op 19.541 us/op 0.88
regular array get 100000 times 34.183 us/op 34.227 us/op 1.00
wrappedArray get 100000 times 34.122 us/op 34.320 us/op 0.99
arrayWithProxy get 100000 times 17.610 ms/op 18.737 ms/op 0.94
ssz.Root.equals 590.00 ns/op 606.00 ns/op 0.97
byteArrayEquals 581.00 ns/op 607.00 ns/op 0.96
shuffle list - 16384 els 7.2724 ms/op 7.5681 ms/op 0.96
shuffle list - 250000 els 103.32 ms/op 109.07 ms/op 0.95
processSlot - 1 slots 9.7180 us/op 10.575 us/op 0.92
processSlot - 32 slots 1.4300 ms/op 1.5087 ms/op 0.95
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 38.254 ms/op 40.281 ms/op 0.95
getCommitteeAssignments - req 1 vs - 250000 vc 3.0310 ms/op 3.3873 ms/op 0.89
getCommitteeAssignments - req 100 vs - 250000 vc 4.2616 ms/op 4.7433 ms/op 0.90
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6613 ms/op 5.1628 ms/op 0.90
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.9500 ns/op 5.8700 ns/op 0.84
state getBlockRootAtSlot - 250000 vs - 7PWei 695.33 ns/op 1.1918 us/op 0.58
computeProposers - vc 250000 11.185 ms/op 12.115 ms/op 0.92
computeEpochShuffling - vc 250000 107.81 ms/op 109.50 ms/op 0.98
getNextSyncCommittee - vc 250000 191.45 ms/op 198.08 ms/op 0.97
computeSigningRoot for AttestationData 14.701 us/op 14.754 us/op 1.00
hash AttestationData serialized data then Buffer.toString(base64) 2.5522 us/op 2.6448 us/op 0.97
toHexString serialized data 1.2743 us/op 1.1899 us/op 1.07
Buffer.toString(base64) 367.31 ns/op 375.61 ns/op 0.98

by benchmarkbot/action

@matthewkeil matthewkeil marked this pull request as ready for review May 16, 2023 03:36
@matthewkeil matthewkeil requested a review from a team as a code owner May 16, 2023 03:36
@matthewkeil
Copy link
Member Author

@dapplion I have the changes loaded to feat3 and its collecting metrics. I will check tomorrow how the dashboard looks and will request re-review when its correct and complete.

dapplion
dapplion previously approved these changes May 17, 2023
Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@dapplion
Copy link
Contributor

@matthewkeil can you post a screen capture of how the metrics dashboard looks like?

@wemeetagain
Copy link
Member

Screenshot from 2023-05-17 15-34-58

😂

@matthewkeil
Copy link
Member Author

I did a bit of digging and there weren't any BLOCK_ERROR_PARENT_UNKNOWN errors in the last 24 hours. I did a manual query and there was one BLOCK_ERROR_INVALID_SIGNATURE about 9pm that shows what it will look like. I was also getting a bit nervous I did something wrong @wemeetagain 😄 . Perhaps testing this on mainnet might make it easier to see how well it will display

Screen Shot 2023-05-17 at 11 39 54 PM Screen Shot 2023-05-17 at 11 40 43 PM Screen Shot 2023-05-17 at 11 39 42 PM

@matthewkeil
Copy link
Member Author

Should I add a panel for the other BLOCK_ERRORs?

Copy link
Contributor

@twoeths twoeths left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all errors should be in the same panel with {{error}} as legend

@matthewkeil
Copy link
Member Author

matthewkeil commented May 18, 2023

There we go!!! Starting to get the hang of prom/grafana. @tuyennhv does that look better?

Screen Shot 2023-05-18 at 2 07 24 AM

@matthewkeil matthewkeil requested a review from twoeths May 18, 2023 06:47
"uid": "${DS_PROMETHEUS}"
},
"editorMode": "code",
"expr": "rate(lodestar_gossip_block_process_block_errors{}[$rate_interval]) * 12",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redundant {}

},
"editorMode": "code",
"expr": "rate(lodestar_gossip_block_process_block_errors{}[$rate_interval]) * 12",
"legendFormat": "{{blockErrorCode}}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@matthewkeil legendFormat should be the label in your metric

Suggested change
"legendFormat": "{{blockErrorCode}}",
"legendFormat": "{{error}}",

@twoeths
Copy link
Contributor

twoeths commented May 25, 2023

@matthewkeil the grafana panel in this PR was merged to unstable, please just rebase and ignore lodestar_networking.json change in this PR

@matthewkeil matthewkeil force-pushed the mkeil/gossip-block-error-metrics branch from 6fb57c0 to 448c0de Compare May 25, 2023 08:20
@matthewkeil
Copy link
Member Author

@matthewkeil the grafana panel in this PR was merged to unstable, please just rebase and ignore lodestar_networking.json change in this PR

@tuyennhv this is updated. I noticed that the panel still had the old title before it captured all of the errors so i update that to remove the "Unknown Parent" part.

I had a bit of trouble with the rebase and needed to cherry pick the commits and force push to get things corrected. Please double check that the changes look ok.

@matthewkeil matthewkeil requested a review from twoeths May 25, 2023 08:30
@twoeths twoeths enabled auto-merge (squash) May 25, 2023 08:39
@twoeths twoeths merged commit 8023e3f into unstable May 25, 2023
@twoeths twoeths deleted the mkeil/gossip-block-error-metrics branch May 25, 2023 08:56
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.9.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Track gossip block errors in metrics
4 participants