forked from cerc-io/plugeth
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.
This commit is contained in:
parent
6d817e16c1
commit
21fa29111b
@ -1,6 +1,7 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
@ -95,3 +96,13 @@ func (a *Address) Set(other Address) {
|
||||
a[i] = v
|
||||
}
|
||||
}
|
||||
|
||||
// PP Pretty Prints a byte slice in the following format:
|
||||
// hex(value[:4])...(hex[len(value)-4:])
|
||||
func PP(value []byte) string {
|
||||
if len(value) <= 8 {
|
||||
return Bytes2Hex(value)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%x...%x", value[:4], value[len(value)-4])
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user