@@ -16,6 +16,7 @@ import (
1616 "github.com/ava-labs/avalanchego/ids"
1717 "github.com/ava-labs/avalanchego/snow"
1818 "github.com/ava-labs/avalanchego/snow/consensus/snowman"
19+ "github.com/ava-labs/avalanchego/snow/engine/common"
1920 "github.com/ava-labs/avalanchego/utils/set"
2021 "github.com/ava-labs/avalanchego/utils/timer/mockable"
2122 "github.com/ava-labs/avalanchego/utils/units"
@@ -25,7 +26,7 @@ import (
2526 "github.com/ava-labs/avalanchego/vms/platformvm/status"
2627 "github.com/ava-labs/avalanchego/vms/platformvm/txs"
2728 "github.com/ava-labs/avalanchego/vms/platformvm/txs/fee"
28- "github.com/ava-labs/avalanchego/vms/platformvm/ txs/mempool"
29+ "github.com/ava-labs/avalanchego/vms/txs/mempool"
2930
3031 smblock "github.com/ava-labs/avalanchego/snow/engine/snowman/block"
3132 blockexecutor "github.com/ava-labs/avalanchego/vms/platformvm/block/executor"
5354
5455type Builder interface {
5556 smblock.BuildBlockWithContextChainVM
56- mempool.Mempool
57+ mempool.Mempool [ * txs. Tx ]
5758
5859 // StartBlockTimer starts to issue block creation requests to advance the
5960 // chain timestamp.
@@ -82,8 +83,9 @@ type Builder interface {
8283
8384// builder implements a simple builder to convert txs into valid blocks
8485type builder struct {
85- mempool.Mempool
86+ mempool.Mempool [ * txs. Tx ]
8687
88+ toEngine chan <- common.Message
8789 txExecutorBackend * txexecutor.Backend
8890 blkManager blockexecutor.Manager
8991
@@ -95,12 +97,14 @@ type builder struct {
9597}
9698
9799func New (
98- mempool mempool.Mempool ,
100+ mempool mempool.Mempool [* txs.Tx ],
101+ toEngine chan <- common.Message ,
99102 txExecutorBackend * txexecutor.Backend ,
100103 blkManager blockexecutor.Manager ,
101104) Builder {
102105 return & builder {
103106 Mempool : mempool ,
107+ toEngine : toEngine ,
104108 txExecutorBackend : txExecutorBackend ,
105109 blkManager : blkManager ,
106110 resetTimer : make (chan struct {}, 1 ),
@@ -143,7 +147,10 @@ func (b *builder) StartBlockTimer() {
143147 }
144148
145149 // Block needs to be issued to advance time.
146- b .Mempool .RequestBuildBlock (true /*=emptyBlockPermitted*/ )
150+ select {
151+ case b .toEngine <- common .PendingTxs :
152+ default :
153+ }
147154
148155 // Invariant: ResetBlockTimer is guaranteed to be called after
149156 // [durationToSleep] returns a value <= 0. This is because we
@@ -225,7 +232,16 @@ func (b *builder) BuildBlockWithContext(
225232) (snowman.Block , error ) {
226233 // If there are still transactions in the mempool, then we need to
227234 // re-trigger block building.
228- defer b .Mempool .RequestBuildBlock (false /*=emptyBlockPermitted*/ )
235+ defer func () {
236+ if b .Mempool .Len () == 0 {
237+ return
238+ }
239+
240+ select {
241+ case b .toEngine <- common .PendingTxs :
242+ default :
243+ }
244+ }()
229245
230246 b .txExecutorBackend .Ctx .Log .Debug ("starting to attempt to build a block" )
231247
@@ -402,7 +418,7 @@ func packDurangoBlockTxs(
402418 ctx context.Context ,
403419 parentID ids.ID ,
404420 parentState state.Chain ,
405- mempool mempool.Mempool ,
421+ mempool mempool.Mempool [ * txs. Tx ] ,
406422 backend * txexecutor.Backend ,
407423 manager blockexecutor.Manager ,
408424 timestamp time.Time ,
@@ -463,7 +479,7 @@ func packEtnaBlockTxs(
463479 ctx context.Context ,
464480 parentID ids.ID ,
465481 parentState state.Chain ,
466- mempool mempool.Mempool ,
482+ mempool mempool.Mempool [ * txs. Tx ] ,
467483 backend * txexecutor.Backend ,
468484 manager blockexecutor.Manager ,
469485 timestamp time.Time ,
@@ -563,7 +579,7 @@ func executeTx(
563579 ctx context.Context ,
564580 parentID ids.ID ,
565581 stateDiff state.Diff ,
566- mempool mempool.Mempool ,
582+ mempool mempool.Mempool [ * txs. Tx ] ,
567583 backend * txexecutor.Backend ,
568584 manager blockexecutor.Manager ,
569585 pChainHeight uint64 ,
0 commit comments