|
|
@@ -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)
|
|
|
- w.updateSnapshot()
|
|
|
+ // 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.
|