diff options
Diffstat (limited to 'core/transaction_pool.go')
-rw-r--r-- | core/transaction_pool.go | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/core/transaction_pool.go b/core/transaction_pool.go index ce6fed1a9..e31f5c6b3 100644 --- a/core/transaction_pool.go +++ b/core/transaction_pool.go @@ -228,21 +228,6 @@ func (self *TxPool) queueTx(hash common.Hash, tx *types.Transaction) { self.queue[from] = make(map[common.Hash]*types.Transaction) } self.queue[from][hash] = tx - - if len(self.queue[from]) > maxQueued { - var ( - worstHash common.Hash - worstNonce uint64 - ) - for hash, tx := range self.queue[from] { - if tx.Nonce() > worstNonce { - worstNonce = tx.Nonce() - worstHash = hash - } - } - glog.V(logger.Debug).Infof("Queued tx limit exceeded for %x. Removed worst nonce tx: %x\n", common.PP(from[:]), common.PP(worstHash[:])) - delete(self.queue[from], worstHash) - } } // addTx will add a transaction to the pending (processable queue) list of transactions @@ -367,7 +352,16 @@ func (pool *TxPool) checkQueue() { // Find the next consecutive nonce range starting at the // current account nonce. sort.Sort(addq) - for _, e := range addq { + for i, e := range addq { + // start deleting the transactions from the queue if they exceed the limit + if i > maxQueued { + if glog.V(logger.Debug) { + glog.Infof("Queued tx limit exceeded for %s. Tx %s removed\n", common.PP(address[:]), common.PP(e.hash[:])) + } + delete(pool.queue[address], e.hash) + continue + } + if e.AccountNonce > guessedNonce { break } |