aboutsummaryrefslogtreecommitdiffstats
path: root/core/transaction_pool.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-06-15 18:16:29 +0800
committerobscuren <geffobscura@gmail.com>2015-06-15 18:16:29 +0800
commit21fa29111b3cd12e3748fcb6310e6a18c5562f17 (patch)
tree511aef50b3d788a0ee109d1ec255d35153f8b3ff /core/transaction_pool.go
parent6d817e16c1c17f7cad4a34fa91457e21f63f2de4 (diff)
downloaddexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar
dexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.gz
dexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.bz2
dexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.lz
dexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.xz
dexon-21fa29111b3cd12e3748fcb6310e6a18c5562f17.tar.zst
dexon-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/transaction_pool.go')
-rw-r--r--core/transaction_pool.go19
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