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

Don't precompute epoch transition at pre genesis #3533

Merged
merged 1 commit into from
Dec 17, 2021

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Dec 17, 2021

Motivation

Fix this error when running kinsugi at pregenesis:

ec-16 11:03:26.004 [CHAIN]           error: Failed to precompute epoch transition -19 message=REGEN_ERROR_SLOT_BEFORE_BLOCK_SLOT
Error: REGEN_ERROR_SLOT_BEFORE_BLOCK_SLOT
    at StateRegenerator.getBlockSlotState (/usr/app/node_modules/@chainsafe/lodestar/src/chain/regen/regen.ts:96:13)
    at JobItemQueue.QueuedStateRegenerator.jobQueueProcessor [as itemProcessor] (/usr/app/node_modules/@chainsafe/lodestar/src/chain/regen/queued.ts:152:35)
    at Timeout.JobItemQueue.runJob [as _onTimeout] (/usr/app/node_modules/@chainsafe/lodestar/src/util/queue/itemQueue.ts:85:33)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)

@codeclimate
Copy link

codeclimate bot commented Dec 17, 2021

Code Climate has analyzed commit b8e94b8 and detected 0 issues on this pull request.

View more on Code Climate.

@codecov
Copy link

codecov bot commented Dec 17, 2021

Codecov Report

Merging #3533 (b8e94b8) into master (f40f42b) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3533      +/-   ##
==========================================
- Coverage   37.57%   37.56%   -0.01%     
==========================================
  Files         310      310              
  Lines        8251     8252       +1     
  Branches     1272     1273       +1     
==========================================
  Hits         3100     3100              
- Misses       5003     5004       +1     
  Partials      148      148              

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2bcfa6b Previous: f40f42b Ratio
BeaconState.hashTreeRoot - No change 684.00 ns/op 605.00 ns/op 1.13
BeaconState.hashTreeRoot - 1 full validator 140.43 us/op 138.66 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 2.3821 ms/op 2.1780 ms/op 1.09
BeaconState.hashTreeRoot - 512 full validator 30.355 ms/op 29.067 ms/op 1.04
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 153.99 us/op 136.08 us/op 1.13
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.5271 ms/op 2.3633 ms/op 1.07
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 33.387 ms/op 33.048 ms/op 1.01
BeaconState.hashTreeRoot - 1 balances 108.03 us/op 103.13 us/op 1.05
BeaconState.hashTreeRoot - 32 balances 934.33 us/op 883.87 us/op 1.06
BeaconState.hashTreeRoot - 512 balances 8.8900 ms/op 8.9951 ms/op 0.99
BeaconState.hashTreeRoot - 250000 balances 162.71 ms/op 151.21 ms/op 1.08
processSlot - 1 slots 55.103 us/op 54.274 us/op 1.02
processSlot - 32 slots 3.4292 ms/op 3.3894 ms/op 1.01
getCommitteeAssignments - req 1 vs - 250000 vc 6.5276 ms/op 6.0225 ms/op 1.08
getCommitteeAssignments - req 100 vs - 250000 vc 9.0539 ms/op 8.2661 ms/op 1.10
getCommitteeAssignments - req 1000 vs - 250000 vc 9.6423 ms/op 9.0728 ms/op 1.06
computeProposers - vc 250000 25.189 ms/op 24.540 ms/op 1.03
computeEpochShuffling - vc 250000 228.67 ms/op 212.67 ms/op 1.08
getNextSyncCommittee - vc 250000 418.60 ms/op 388.69 ms/op 1.08
altair processAttestation - 250000 vs - 7PWei normalcase 50.008 ms/op 51.053 ms/op 0.98
altair processAttestation - 250000 vs - 7PWei worstcase 50.754 ms/op 54.640 ms/op 0.93
altair processAttestation - setStatus - 1/6 committees join 11.416 ms/op 13.072 ms/op 0.87
altair processAttestation - setStatus - 1/3 committees join 23.682 ms/op 27.334 ms/op 0.87
altair processAttestation - setStatus - 1/2 committees join 36.459 ms/op 41.727 ms/op 0.87
altair processAttestation - setStatus - 2/3 committees join 47.924 ms/op 57.160 ms/op 0.84
altair processAttestation - setStatus - 4/5 committees join 57.811 ms/op 65.117 ms/op 0.89
altair processAttestation - setStatus - 100% committees join 72.207 ms/op 84.319 ms/op 0.86
altair processAttestation - updateEpochParticipants - 1/6 committees join 12.340 ms/op 14.143 ms/op 0.87
altair processAttestation - updateEpochParticipants - 1/3 committees join 25.520 ms/op 30.052 ms/op 0.85
altair processAttestation - updateEpochParticipants - 1/2 committees join 31.007 ms/op 30.402 ms/op 1.02
altair processAttestation - updateEpochParticipants - 2/3 committees join 41.065 ms/op 43.393 ms/op 0.95
altair processAttestation - updateEpochParticipants - 4/5 committees join 35.092 ms/op 34.482 ms/op 1.02
altair processAttestation - updateEpochParticipants - 100% committees join 35.730 ms/op 36.426 ms/op 0.98
altair processAttestation - updateAllStatus 26.899 ms/op 26.349 ms/op 1.02
altair processBlock - 250000 vs - 7PWei normalcase 55.866 ms/op 53.323 ms/op 1.05
altair processBlock - 250000 vs - 7PWei worstcase 160.69 ms/op 139.76 ms/op 1.15
altair processEpoch - mainnet_e81889 1.2905 s/op 1.1832 s/op 1.09
mainnet_e81889 - altair beforeProcessEpoch 313.60 ms/op 294.62 ms/op 1.06
mainnet_e81889 - altair processJustificationAndFinalization 70.650 us/op 67.532 us/op 1.05
mainnet_e81889 - altair processInactivityUpdates 22.156 ms/op 20.682 ms/op 1.07
mainnet_e81889 - altair processRewardsAndPenalties 274.51 ms/op 271.23 ms/op 1.01
mainnet_e81889 - altair processRegistryUpdates 12.447 us/op 13.694 us/op 0.91
mainnet_e81889 - altair processSlashings 3.4990 us/op 3.4990 us/op 1.00
mainnet_e81889 - altair processEth1DataReset 3.6710 us/op 3.6750 us/op 1.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 13.469 ms/op 12.431 ms/op 1.08
mainnet_e81889 - altair processSlashingsReset 16.882 us/op 21.864 us/op 0.77
mainnet_e81889 - altair processRandaoMixesReset 21.573 us/op 19.497 us/op 1.11
mainnet_e81889 - altair processHistoricalRootsUpdate 5.0260 us/op 5.6830 us/op 0.88
mainnet_e81889 - altair processParticipationFlagUpdates 122.17 ms/op 113.34 ms/op 1.08
mainnet_e81889 - altair processSyncCommitteeUpdates 3.1020 us/op 3.3750 us/op 0.92
mainnet_e81889 - altair afterProcessEpoch 273.60 ms/op 255.26 ms/op 1.07
altair processInactivityUpdates - 250000 normalcase 80.646 ms/op 77.731 ms/op 1.04
altair processInactivityUpdates - 250000 worstcase 80.991 ms/op 81.031 ms/op 1.00
altair processParticipationFlagUpdates - 250000 anycase 111.97 ms/op 110.57 ms/op 1.01
altair processRewardsAndPenalties - 250000 normalcase 183.24 ms/op 166.50 ms/op 1.10
altair processRewardsAndPenalties - 250000 worstcase 182.45 ms/op 148.16 ms/op 1.23
altair processSyncCommitteeUpdates - 250000 432.65 ms/op 383.94 ms/op 1.13
Tree 40 250000 create 928.34 ms/op 907.32 ms/op 1.02
Tree 40 250000 get(125000) 402.62 ns/op 384.87 ns/op 1.05
Tree 40 250000 set(125000) 2.0282 us/op 2.0017 us/op 1.01
Tree 40 250000 toArray() 59.206 ms/op 42.166 ms/op 1.40
Tree 40 250000 iterate all - toArray() + loop 41.357 ms/op 48.057 ms/op 0.86
Tree 40 250000 iterate all - get(i) 143.24 ms/op 130.20 ms/op 1.10
MutableVector 250000 create 20.517 ms/op 23.032 ms/op 0.89
MutableVector 250000 get(125000) 17.743 ns/op 15.998 ns/op 1.11
MutableVector 250000 set(125000) 535.73 ns/op 542.31 ns/op 0.99
MutableVector 250000 toArray() 9.5633 ms/op 20.953 ms/op 0.46
MutableVector 250000 iterate all - toArray() + loop 9.7008 ms/op 11.341 ms/op 0.86
MutableVector 250000 iterate all - get(i) 3.9193 ms/op 3.9077 ms/op 1.00
Array 250000 create 5.5554 ms/op 6.1738 ms/op 0.90
Array 250000 clone - spread 2.0398 ms/op 2.0426 ms/op 1.00
Array 250000 get(125000) 1.0940 ns/op 0.98400 ns/op 1.11
Array 250000 set(125000) 1.0910 ns/op 0.97900 ns/op 1.11
Array 250000 iterate all - loop 210.91 us/op 186.33 us/op 1.13
aggregationBits - 2048 els - readonlyValues 258.17 us/op 227.31 us/op 1.14
aggregationBits - 2048 els - zipIndexesInBitList 41.817 us/op 38.049 us/op 1.10
regular array get 100000 times 84.277 us/op 76.778 us/op 1.10
wrappedArray get 100000 times 84.245 us/op 76.563 us/op 1.10
arrayWithProxy get 100000 times 36.097 ms/op 33.791 ms/op 1.07
ssz.Root.equals 1.3930 us/op 1.2920 us/op 1.08
ssz.Root.equals with valueOf() 1.5860 us/op 1.5600 us/op 1.02
byteArrayEquals with valueOf() 1.5310 us/op 1.4510 us/op 1.06
phase0 processBlock - 250000 vs - 7PWei normalcase 12.088 ms/op 12.057 ms/op 1.00
phase0 processBlock - 250000 vs - 7PWei worstcase 89.326 ms/op 84.620 ms/op 1.06
phase0 afterProcessEpoch - 250000 vs - 7PWei 251.77 ms/op 260.80 ms/op 0.97
phase0 beforeProcessEpoch - 250000 vs - 7PWei 663.42 ms/op 628.40 ms/op 1.06
phase0 processEpoch - mainnet_e58758 916.33 ms/op 864.25 ms/op 1.06
mainnet_e58758 - phase0 beforeProcessEpoch 556.16 ms/op 540.75 ms/op 1.03
mainnet_e58758 - phase0 processJustificationAndFinalization 107.13 us/op 81.419 us/op 1.32
mainnet_e58758 - phase0 processRewardsAndPenalties 120.47 ms/op 116.83 ms/op 1.03
mainnet_e58758 - phase0 processRegistryUpdates 69.157 us/op 54.255 us/op 1.27
mainnet_e58758 - phase0 processSlashings 4.0950 us/op 3.8850 us/op 1.05
mainnet_e58758 - phase0 processEth1DataReset 4.0670 us/op 3.1960 us/op 1.27
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 12.036 ms/op 10.196 ms/op 1.18
mainnet_e58758 - phase0 processSlashingsReset 15.174 us/op 17.232 us/op 0.88
mainnet_e58758 - phase0 processRandaoMixesReset 19.864 us/op 24.084 us/op 0.82
mainnet_e58758 - phase0 processHistoricalRootsUpdate 4.0200 us/op 3.8770 us/op 1.04
mainnet_e58758 - phase0 processParticipationRecordUpdates 12.792 us/op 16.462 us/op 0.78
mainnet_e58758 - phase0 afterProcessEpoch 260.32 ms/op 201.87 ms/op 1.29
phase0 processEffectiveBalanceUpdates - 250000 normalcase 13.268 ms/op 11.536 ms/op 1.15
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4742 s/op 1.4107 s/op 1.04
phase0 processRegistryUpdates - 250000 normalcase 76.980 us/op 59.126 us/op 1.30
phase0 processRegistryUpdates - 250000 badcase_full_deposits 3.3587 ms/op 3.0637 ms/op 1.10
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.9217 s/op 1.7203 s/op 1.12
phase0 getAttestationDeltas - 250000 normalcase 54.626 ms/op 50.066 ms/op 1.09
phase0 getAttestationDeltas - 250000 worstcase 44.169 ms/op 41.740 ms/op 1.06
phase0 processSlashings - 250000 worstcase 39.238 ms/op 38.432 ms/op 1.02
shuffle list - 16384 els 15.666 ms/op 14.828 ms/op 1.06
shuffle list - 250000 els 225.16 ms/op 203.61 ms/op 1.11
getEffectiveBalances - 250000 vs - 7PWei 11.845 ms/op 12.745 ms/op 0.93
computeDeltas 4.2830 ms/op 3.6999 ms/op 1.16
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.1734 ms/op 2.4786 ms/op 0.88
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 836.63 us/op 773.72 us/op 1.08
BLS verify - blst-native 2.3236 ms/op 2.0755 ms/op 1.12
BLS verifyMultipleSignatures 3 - blst-native 4.7780 ms/op 4.2317 ms/op 1.13
BLS verifyMultipleSignatures 8 - blst-native 10.308 ms/op 9.5689 ms/op 1.08
BLS verifyMultipleSignatures 32 - blst-native 37.363 ms/op 33.985 ms/op 1.10
BLS aggregatePubkeys 32 - blst-native 49.132 us/op 45.594 us/op 1.08
BLS aggregatePubkeys 128 - blst-native 192.50 us/op 179.74 us/op 1.07
getAttestationsForBlock 103.84 ms/op 102.42 ms/op 1.01
CheckpointStateCache - add get delete 17.988 us/op 16.838 us/op 1.07
validate gossip signedAggregateAndProof - struct 5.5703 ms/op 4.8754 ms/op 1.14
validate gossip signedAggregateAndProof - treeBacked 5.4861 ms/op 4.9253 ms/op 1.11
validate gossip attestation - struct 2.5948 ms/op 2.2854 ms/op 1.14
validate gossip attestation - treeBacked 2.6061 ms/op 2.2776 ms/op 1.14
Object access 1 prop 0.39800 ns/op 0.34100 ns/op 1.17
Map access 1 prop 0.35200 ns/op 0.29200 ns/op 1.21
Object get x1000 21.522 ns/op 18.534 ns/op 1.16
Map get x1000 1.3170 ns/op 1.0540 ns/op 1.25
Object set x1000 122.92 ns/op 117.77 ns/op 1.04
Map set x1000 74.681 ns/op 70.749 ns/op 1.06
Return object 10000 times 0.45690 ns/op 0.38450 ns/op 1.19
Throw Error 10000 times 7.3027 us/op 6.3306 us/op 1.15
RateTracker 1000000 limit, 1 obj count per request 215.86 ns/op 199.47 ns/op 1.08
RateTracker 1000000 limit, 2 obj count per request 159.91 ns/op 146.61 ns/op 1.09
RateTracker 1000000 limit, 4 obj count per request 131.87 ns/op 122.51 ns/op 1.08
RateTracker 1000000 limit, 8 obj count per request 118.58 ns/op 106.60 ns/op 1.11
RateTracker with prune 4.4040 us/op 4.1550 us/op 1.06

by benchmarkbot/action

@dapplion dapplion merged commit 3d05dd6 into master Dec 17, 2021
@dapplion dapplion deleted the tuyen/no-preComputeEpochTransition-preGenesis branch December 17, 2021 06:54
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.

None yet

3 participants