diff options
author | obscuren <geffobscura@gmail.com> | 2015-06-15 18:16:29 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-06-15 18:16:29 +0800 |
commit | 21fa29111b3cd12e3748fcb6310e6a18c5562f17 (patch) | |
tree | 511aef50b3d788a0ee109d1ec255d35153f8b3ff /core | |
parent | 6d817e16c1c17f7cad4a34fa91457e21f63f2de4 (diff) | |
download | go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.gz go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.bz2 go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.lz go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.xz go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.zst go-tangerine-21fa29111b3cd12e3748fcb6310e6a18c5562f17.zip |
core: reduce max allowed queued txs per address
Transactions in the queue are now capped to a maximum of 200
transactions. This number is completely arbitrary.
Diffstat (limited to 'core')
-rw-r--r-- | core/transaction_pool.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/transaction_pool.go b/core/transaction_pool.go index 8f917e96a..ce6fed1a9 100644 --- a/core/transaction_pool.go +++ b/core/transaction_pool.go @@ -28,6 +28,10 @@ var ( ErrNegativeValue = errors.New("Negative value") ) +const ( + maxQueued = 200 // max limit of queued txs per address +) + type stateFn func() *state.StateDB // TxPool contains all currently known transactions. Transactions @@ -224,6 +228,21 @@ 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 |