From e28370b03486c45dd76f793fcd48d5d2fab19d29 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Mon, 2 Feb 2026 16:52:15 +0100 Subject: [PATCH 1/8] add sequencer tx size metrics --- execution/gethexec/sequencer.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index f8658bda211..3787efc6b80 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -54,6 +54,8 @@ var ( nonceFailureCacheOverflowCounter = metrics.NewRegisteredCounter("arb/sequencer/noncefailurecache/overflow", nil) blockCreationTimer = metrics.NewRegisteredHistogram("arb/sequencer/block/creation", nil, metrics.NewBoundedHistogramSample()) successfulBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/successful", nil) + blockTxSizeHistogram = metrics.NewRegisteredHistogram("arb/sequencer/block/txsize", nil, metrics.NewBoundedHistogramSample()) + txSizeHistogram = metrics.NewRegisteredHistogram("arb/sequencer/transactions/txsize", nil, metrics.NewBoundedHistogramSample()) conditionalTxRejectedBySequencerCounter = metrics.NewRegisteredCounter("arb/sequencer/conditionaltx/rejected", nil) conditionalTxAcceptedBySequencerCounter = metrics.NewRegisteredCounter("arb/sequencer/conditionaltx/accepted", nil) l1GasPriceGauge = metrics.NewRegisteredGauge("arb/sequencer/l1gasprice", nil) @@ -1430,11 +1432,14 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } madeBlock := false + var blockTxSize int64 for i, err := range hooks.txErrors { + queueItem := queueItems[i] if err == nil { madeBlock = true + blockTxSize += int64(queueItem.txSize) + txSizeHistogram.Update(int64(queueItem.txSize)) } - queueItem := queueItems[i] if errors.Is(err, core.ErrGasLimitReached) { // There's not enough gas left in the block for this tx. if madeBlock { @@ -1454,6 +1459,9 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } queueItem.returnResult(err) } + if madeBlock { + blockTxSizeHistogram.Update(blockTxSize) + } return madeBlock } From cd08f0fa5a50067c41c0419f31bfb00d4545b45b Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Tue, 3 Feb 2026 16:16:32 +0100 Subject: [PATCH 2/8] add sequencer queue metrics --- execution/gethexec/sequencer.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 3787efc6b80..570b9cfe75c 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -46,6 +46,8 @@ import ( var ( sequencerBacklogGauge = metrics.NewRegisteredGauge("arb/sequencer/backlog", nil) + sequencerQueueNormalGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/normal", nil) + sequencerQueueTimeboostGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/timeboost", nil) nonceCacheHitCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/hit", nil) nonceCacheMissCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/miss", nil) nonceCacheRejectedCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/rejected", nil) @@ -615,6 +617,7 @@ func (s *Sequencer) PublishAuctionResolutionTransaction(ctx context.Context, tx firstAppearance: time.Now(), isTimeboosted: false, } + sequencerQueueTimeboostGauge.Update(int64(len(s.timeboostAuctionResolutionTxQueue))) return nil } @@ -718,7 +721,7 @@ func (s *Sequencer) publishTransactionToQueue(queueCtx context.Context, tx *type case <-queueCtx.Done(): return queueCtx.Err() } - + sequencerQueueNormalGauge.Update(int64(len(s.txQueue))) return nil } @@ -1331,6 +1334,9 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { nil, ) + sequencerQueueNormalGauge.Update(int64(len(s.txQueue))) + sequencerQueueTimeboostGauge.Update(int64(len(s.timeboostAuctionResolutionTxQueue))) + for _, queueItem := range queueItems { if queueItem.isTimeboosted { timeboostedTxs[queueItem.tx.Hash()] = struct{}{} From 517d5e72548ff6aeec2735e5d38d2af5611c8284 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Tue, 3 Feb 2026 19:38:06 +0100 Subject: [PATCH 3/8] add before block sequencer queue len histogram metrics --- execution/gethexec/sequencer.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 570b9cfe75c..2b48982fd3e 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -48,6 +48,8 @@ var ( sequencerBacklogGauge = metrics.NewRegisteredGauge("arb/sequencer/backlog", nil) sequencerQueueNormalGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/normal", nil) sequencerQueueTimeboostGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/timeboost", nil) + sequencerQueueNormalHistogram = metrics.NewRegisteredHistogram("arb/sequencer/queue/histogram/normal", nil, metrics.NewBoundedHistogramSample()) + sequencerQueueTimeboostHistogram = metrics.NewRegisteredHistogram("arb/sequencer/queue/histogram/timeboost", nil, metrics.NewBoundedHistogramSample()) nonceCacheHitCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/hit", nil) nonceCacheMissCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/miss", nil) nonceCacheRejectedCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/rejected", nil) @@ -1334,8 +1336,12 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { nil, ) - sequencerQueueNormalGauge.Update(int64(len(s.txQueue))) - sequencerQueueTimeboostGauge.Update(int64(len(s.timeboostAuctionResolutionTxQueue))) + txQueueLen := int64(len(s.txQueue)) + timeboostTxQueueLen := int64(len(s.timeboostAuctionResolutionTxQueue)) + sequencerQueueNormalGauge.Update(txQueueLen) + sequencerQueueNormalHistogram.Update(txQueueLen) + sequencerQueueTimeboostGauge.Update(timeboostTxQueueLen) + sequencerQueueTimeboostHistogram.Update(timeboostTxQueueLen) for _, queueItem := range queueItems { if queueItem.isTimeboosted { From 5e2e9807cb39d1b71c5a68cb8516dc65f68372a1 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Tue, 3 Feb 2026 22:43:31 +0100 Subject: [PATCH 4/8] add counters for early ended blocks --- execution/gethexec/sequencer.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 2b48982fd3e..766fa91cfbc 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -66,6 +66,12 @@ var ( callDataUnitsBacklogGauge = metrics.NewRegisteredGauge("arb/sequencer/calldataunitsbacklog", nil) currentSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/currentsurplus", nil) expectedSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/expectedsurplus", nil) + // number of blocks ended because of block gas limit + gasFullBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/gasfull", nil) + // number of blocks ended because of txes data size limit + dataFullBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/datafull", nil) + // number of blocks ended because of exhausting the transactions to sequence + txExhaustedBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/txexhausted", nil) ) type SequencerConfig struct { @@ -1328,9 +1334,10 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { s.nonceCache.BeginNewBlock() queueItems = s.precheckNonces(queueItems) timeboostedTxs := make(map[common.Hash]struct{}) + maxTxDataSize := s.config().MaxTxDataSize hooks := MakeSequencingHooks( queueItems, - s.config().MaxTxDataSize, + maxTxDataSize, s.preTxFilter, s.postTxFilter, nil, @@ -1444,6 +1451,7 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } madeBlock := false + blockLimitReached := false var blockTxSize int64 for i, err := range hooks.txErrors { queueItem := queueItems[i] @@ -1455,6 +1463,15 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { if errors.Is(err, core.ErrGasLimitReached) { // There's not enough gas left in the block for this tx. if madeBlock { + // make sure that this was last tx processed (it should always be true) + if i == len(hooks.txErrors)-1 { + if blockTxSize+int64(queueItem.txSize) > int64(maxTxDataSize) { + dataFullBlocksCounter.Inc(1) + } else { + gasFullBlocksCounter.Inc(1) + } + blockLimitReached = true + } // There was already an earlier tx in the block; retry in a fresh block. s.txRetryQueue.Push(queueItem) continue @@ -1473,6 +1490,9 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } if madeBlock { blockTxSizeHistogram.Update(blockTxSize) + if !blockLimitReached && hooks.sequencedQueueItemsCount == len(hooks.queueItems) { + txExhaustedBlocksCounter.Inc(1) + } } return madeBlock } From 1a8297644962fd20ac7b7816d97e45f392b8e3c4 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Tue, 3 Feb 2026 23:59:57 +0100 Subject: [PATCH 5/8] add waitfortx sequencer metric --- execution/gethexec/sequencer.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 766fa91cfbc..4d40f50eeae 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -66,6 +66,7 @@ var ( callDataUnitsBacklogGauge = metrics.NewRegisteredGauge("arb/sequencer/calldataunitsbacklog", nil) currentSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/currentsurplus", nil) expectedSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/expectedsurplus", nil) + waitForTxHistogram = metrics.NewRegisteredHistogram("arb/sequencer/waitfortx", nil, metrics.NewBoundedHistogramSample()) // number of blocks ended because of block gas limit gasFullBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/gasfull", nil) // number of blocks ended because of txes data size limit @@ -1233,10 +1234,11 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { }() var startOfReadingFromTxQueue time.Time - + startOfBlockCreation := time.Now() for { if len(queueItems) == 1 { startOfReadingFromTxQueue = time.Now() + waitForTxHistogram.Update(int64(time.Since(startOfBlockCreation))) } else if len(queueItems) > 1 && time.Since(startOfReadingFromTxQueue) > config.ReadFromTxQueueTimeout { break } From 9686ff1d1c4cb86959cc4e968572df00abf230f8 Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Wed, 4 Feb 2026 02:29:04 +0100 Subject: [PATCH 6/8] update sequencer metrics, remove timeboost specific ones --- execution/gethexec/sequencer.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 4d40f50eeae..a3602c165dd 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -46,10 +46,8 @@ import ( var ( sequencerBacklogGauge = metrics.NewRegisteredGauge("arb/sequencer/backlog", nil) - sequencerQueueNormalGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/normal", nil) - sequencerQueueTimeboostGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/timeboost", nil) - sequencerQueueNormalHistogram = metrics.NewRegisteredHistogram("arb/sequencer/queue/histogram/normal", nil, metrics.NewBoundedHistogramSample()) - sequencerQueueTimeboostHistogram = metrics.NewRegisteredHistogram("arb/sequencer/queue/histogram/timeboost", nil, metrics.NewBoundedHistogramSample()) + sequencerQueueGauge = metrics.NewRegisteredGauge("arb/sequencer/queue/length", nil) + sequencerQueueHistogram = metrics.NewRegisteredHistogram("arb/sequencer/queue/histogram", nil, metrics.NewBoundedHistogramSample()) nonceCacheHitCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/hit", nil) nonceCacheMissCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/miss", nil) nonceCacheRejectedCounter = metrics.NewRegisteredCounter("arb/sequencer/noncecache/rejected", nil) @@ -626,7 +624,6 @@ func (s *Sequencer) PublishAuctionResolutionTransaction(ctx context.Context, tx firstAppearance: time.Now(), isTimeboosted: false, } - sequencerQueueTimeboostGauge.Update(int64(len(s.timeboostAuctionResolutionTxQueue))) return nil } @@ -730,7 +727,6 @@ func (s *Sequencer) publishTransactionToQueue(queueCtx context.Context, tx *type case <-queueCtx.Done(): return queueCtx.Err() } - sequencerQueueNormalGauge.Update(int64(len(s.txQueue))) return nil } @@ -1233,12 +1229,20 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } }() + sequencerQueueGauge.Update(int64(len(s.txQueue))) var startOfReadingFromTxQueue time.Time startOfBlockCreation := time.Now() for { if len(queueItems) == 1 { startOfReadingFromTxQueue = time.Now() - waitForTxHistogram.Update(int64(time.Since(startOfBlockCreation))) + waitForFirstTx := time.Since(startOfBlockCreation) + if waitForFirstTx < time.Millisecond { + // we don't care about the first iteration duration + // so to keep history clean we sanitize waits shorter then ms to 0 + waitForTxHistogram.Update(0) + } else { + waitForTxHistogram.Update(int64(waitForFirstTx)) + } } else if len(queueItems) > 1 && time.Since(startOfReadingFromTxQueue) > config.ReadFromTxQueueTimeout { break } @@ -1346,11 +1350,8 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { ) txQueueLen := int64(len(s.txQueue)) - timeboostTxQueueLen := int64(len(s.timeboostAuctionResolutionTxQueue)) - sequencerQueueNormalGauge.Update(txQueueLen) - sequencerQueueNormalHistogram.Update(txQueueLen) - sequencerQueueTimeboostGauge.Update(timeboostTxQueueLen) - sequencerQueueTimeboostHistogram.Update(timeboostTxQueueLen) + sequencerQueueGauge.Update(txQueueLen) + sequencerQueueHistogram.Update(txQueueLen) for _, queueItem := range queueItems { if queueItem.isTimeboosted { From 17d1af00b519705884f9bd2781e889b29c4c089f Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Wed, 4 Feb 2026 10:48:18 +0100 Subject: [PATCH 7/8] fix updating seq qeueue length metrics, improve end of block metrics --- execution/gethexec/sequencer.go | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index a3602c165dd..9cfe8aa2d63 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -929,6 +929,8 @@ type FullSequencingHooks struct { preTxFilter func(*params.ChainConfig, *types.Header, *state.StateDB, *arbosState.ArbosState, *types.Transaction, *arbitrum_types.ConditionalOptions, common.Address, *arbos.L1Info) error postTxFilter func(*types.Header, *state.StateDB, *arbosState.ArbosState, *types.Transaction, common.Address, uint64, *core.ExecutionResult) error blockFilter func(*types.Header, *state.StateDB, types.Transactions, types.Receipts) error + txSizeLimitReached bool + exhaustedQueueItems bool } func (s *FullSequencingHooks) MessageFromTxes(header *arbostypes.L1IncomingMessageHeader) (*arbostypes.L1IncomingMessage, error) { @@ -995,11 +997,13 @@ func (s *FullSequencingHooks) NextTxToSequence() (*types.Transaction, *arbitrum_ s.sequencedTxsSizeSoFar += s.queueItems[s.sequencedQueueItemsCount-1].txSize } if s.sequencedQueueItemsCount >= len(s.queueItems) { + s.exhaustedQueueItems = true return nil, nil, nil } if s.sequencedTxsSizeSoFar+s.queueItems[s.sequencedQueueItemsCount].txSize > s.maxSequencedTxsSize { s.sequencedQueueItemsCount += 1 s.InsertLastTxError(core.ErrGasLimitReached) + s.txSizeLimitReached = true } else { s.sequencedQueueItemsCount += 1 break @@ -1229,7 +1233,10 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } }() - sequencerQueueGauge.Update(int64(len(s.txQueue))) + txQueueLen := int64(len(s.txQueue)) + sequencerQueueGauge.Update(txQueueLen) + sequencerQueueHistogram.Update(txQueueLen) + var startOfReadingFromTxQueue time.Time startOfBlockCreation := time.Now() for { @@ -1349,10 +1356,6 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { nil, ) - txQueueLen := int64(len(s.txQueue)) - sequencerQueueGauge.Update(txQueueLen) - sequencerQueueHistogram.Update(txQueueLen) - for _, queueItem := range queueItems { if queueItem.isTimeboosted { timeboostedTxs[queueItem.tx.Hash()] = struct{}{} @@ -1454,7 +1457,6 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } madeBlock := false - blockLimitReached := false var blockTxSize int64 for i, err := range hooks.txErrors { queueItem := queueItems[i] @@ -1466,15 +1468,6 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { if errors.Is(err, core.ErrGasLimitReached) { // There's not enough gas left in the block for this tx. if madeBlock { - // make sure that this was last tx processed (it should always be true) - if i == len(hooks.txErrors)-1 { - if blockTxSize+int64(queueItem.txSize) > int64(maxTxDataSize) { - dataFullBlocksCounter.Inc(1) - } else { - gasFullBlocksCounter.Inc(1) - } - blockLimitReached = true - } // There was already an earlier tx in the block; retry in a fresh block. s.txRetryQueue.Push(queueItem) continue @@ -1493,8 +1486,12 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { } if madeBlock { blockTxSizeHistogram.Update(blockTxSize) - if !blockLimitReached && hooks.sequencedQueueItemsCount == len(hooks.queueItems) { + if hooks.txSizeLimitReached { + dataFullBlocksCounter.Inc(1) + } else if hooks.exhaustedQueueItems { txExhaustedBlocksCounter.Inc(1) + } else { + gasFullBlocksCounter.Inc(1) } } return madeBlock From 7868f4dea5ce220bead4c561060bdc0525e9ba6d Mon Sep 17 00:00:00 2001 From: Maciej Kulawik Date: Wed, 4 Feb 2026 11:28:50 +0100 Subject: [PATCH 8/8] fix gasLimitedBlocksCounter metric --- execution/gethexec/sequencer.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/execution/gethexec/sequencer.go b/execution/gethexec/sequencer.go index 9cfe8aa2d63..bd484ed0efe 100644 --- a/execution/gethexec/sequencer.go +++ b/execution/gethexec/sequencer.go @@ -65,10 +65,10 @@ var ( currentSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/currentsurplus", nil) expectedSurplusGauge = metrics.NewRegisteredGauge("arb/sequencer/expectedsurplus", nil) waitForTxHistogram = metrics.NewRegisteredHistogram("arb/sequencer/waitfortx", nil, metrics.NewBoundedHistogramSample()) - // number of blocks ended because of block gas limit - gasFullBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/gasfull", nil) + // number of blocks ended because of block gas limit at least one tx wasn't included in block because of gas limit) + gasLimitedBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/gaslimited", nil) // number of blocks ended because of txes data size limit - dataFullBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/datafull", nil) + dataLimitedBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/datalimited", nil) // number of blocks ended because of exhausting the transactions to sequence txExhaustedBlocksCounter = metrics.NewRegisteredCounter("arb/sequencer/block/txexhausted", nil) ) @@ -930,7 +930,6 @@ type FullSequencingHooks struct { postTxFilter func(*types.Header, *state.StateDB, *arbosState.ArbosState, *types.Transaction, common.Address, uint64, *core.ExecutionResult) error blockFilter func(*types.Header, *state.StateDB, types.Transactions, types.Receipts) error txSizeLimitReached bool - exhaustedQueueItems bool } func (s *FullSequencingHooks) MessageFromTxes(header *arbostypes.L1IncomingMessageHeader) (*arbostypes.L1IncomingMessage, error) { @@ -997,7 +996,6 @@ func (s *FullSequencingHooks) NextTxToSequence() (*types.Transaction, *arbitrum_ s.sequencedTxsSizeSoFar += s.queueItems[s.sequencedQueueItemsCount-1].txSize } if s.sequencedQueueItemsCount >= len(s.queueItems) { - s.exhaustedQueueItems = true return nil, nil, nil } if s.sequencedTxsSizeSoFar+s.queueItems[s.sequencedQueueItemsCount].txSize > s.maxSequencedTxsSize { @@ -1458,6 +1456,7 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { madeBlock := false var blockTxSize int64 + blockGasLimitReached := false for i, err := range hooks.txErrors { queueItem := queueItems[i] if err == nil { @@ -1468,6 +1467,7 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { if errors.Is(err, core.ErrGasLimitReached) { // There's not enough gas left in the block for this tx. if madeBlock { + blockGasLimitReached = true // There was already an earlier tx in the block; retry in a fresh block. s.txRetryQueue.Push(queueItem) continue @@ -1487,11 +1487,12 @@ func (s *Sequencer) createBlock(ctx context.Context) (returnValue bool) { if madeBlock { blockTxSizeHistogram.Update(blockTxSize) if hooks.txSizeLimitReached { - dataFullBlocksCounter.Inc(1) - } else if hooks.exhaustedQueueItems { - txExhaustedBlocksCounter.Inc(1) + dataLimitedBlocksCounter.Inc(1) + } else if blockGasLimitReached { + gasLimitedBlocksCounter.Inc(1) } else { - gasFullBlocksCounter.Inc(1) + // no transactions were skipped due to block size or gas limit + txExhaustedBlocksCounter.Inc(1) } } return madeBlock