Skip to content

Commit 117b449

Browse files
authored
More tuning to getPayloadBodiesByRange (#3442)
1 parent 8a6877d commit 117b449

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

execution_chain/beacon/api_handler/api_getbodies.nim

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,21 @@ proc getPayloadBodiesByRange*(ben: BeaconEngineRef,
5757
if last > ben.chain.latestNumber:
5858
last = ben.chain.latestNumber
5959

60+
let base = ben.chain.baseNumber
6061
var list = newSeqOfCap[Opt[ExecutionPayloadBodyV1]](last-start)
6162

62-
# get bodies from database.
63-
for bn in start..min(last, ben.chain.baseNumber):
64-
var body = ben.chain.payloadBodyV1ByNumber(bn).valueOr:
65-
list.add Opt.none(ExecutionPayloadBodyV1)
66-
continue
67-
list.add Opt.some(move(body))
68-
69-
# get bodies from cache in FC module.
70-
if last > ben.chain.baseNumber:
71-
ben.chain.payloadBodyV1FromBaseTo(last, list)
63+
if start < base:
64+
# get bodies from database.
65+
for bn in start..min(last, base):
66+
var body = ben.chain.payloadBodyV1ByNumber(bn).valueOr:
67+
list.add Opt.none(ExecutionPayloadBodyV1)
68+
continue
69+
list.add Opt.some(move(body))
70+
71+
# get bodies from cache in FC module.
72+
if last > base:
73+
ben.chain.payloadBodyV1InMemory(base, last, list)
74+
else:
75+
ben.chain.payloadBodyV1InMemory(start, last, list)
7276

7377
move(list)

execution_chain/core/chain/forked_chain.nim

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -893,14 +893,15 @@ proc receiptsByBlockHash*(c: ForkedChainRef, blockHash: Hash32): Result[seq[Stor
893893

894894
c.baseTxFrame.getReceipts(header.receiptsRoot)
895895

896-
func payloadBodyV1FromBaseTo*(c: ForkedChainRef,
897-
last: BlockNumber,
898-
list: var seq[Opt[ExecutionPayloadBodyV1]]) =
896+
func payloadBodyV1InMemory*(c: ForkedChainRef,
897+
first: BlockNumber,
898+
last: BlockNumber,
899+
list: var seq[Opt[ExecutionPayloadBodyV1]]) =
899900
var
900-
blocks = newSeqOfCap[BlockRef](last-c.base.number+1)
901+
blocks = newSeqOfCap[BlockRef](last-first+1)
901902
902903
loopIt(c.latest):
903-
if it.number <= last:
904+
if it.number >= first and it.number <= last:
904905
blocks.add(it)
905906
906907
for i in countdown(blocks.len-1, 0):

0 commit comments

Comments
 (0)