Commit 3271a5af authored by Martin Holst Swende's avatar Martin Holst Swende Committed by Péter Szilágyi

miner: don't update pending state when no transactions are added (#19734)

* miner: don't update pending state when no transactions are added

* miner: avoid transaction processing when pending block is already full
parent 2b303e7d
......@@ -453,6 +453,10 @@ func (w *worker) mainLoop() {
// already included in the current mining block. These transactions will
// be automatically eliminated.
if !w.isRunning() && w.current != nil {
// If block is already full, abort
if gp := w.current.gasPool; gp != nil && gp.Gas() < params.TxGas {
continue
}
w.mu.RLock()
coinbase := w.coinbase
w.mu.RUnlock()
......@@ -463,8 +467,13 @@ func (w *worker) mainLoop() {
txs[acc] = append(txs[acc], tx)
}
txset := types.NewTransactionsByPriceAndNonce(w.current.signer, txs)
tcount := w.current.tcount
w.commitTransactions(txset, coinbase, nil)
// Only update the snapshot if any new transactons were added
// to the pending block
if tcount != w.current.tcount {
w.updateSnapshot()
}
} else {
// If clique is running in dev mode(period is 0), disable
// advance sealing here.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment