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
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -95,3 +96,13 @@ func (a *Address) Set(other Address) {
|
|||||||
a[i] = v
|
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")
|
ErrNegativeValue = errors.New("Negative value")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
maxQueued = 200 // max limit of queued txs per address
|
||||||
|
)
|
||||||
|
|
||||||
type stateFn func() *state.StateDB
|
type stateFn func() *state.StateDB
|
||||||
|
|
||||||
// TxPool contains all currently known transactions. Transactions
|
// 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] = make(map[common.Hash]*types.Transaction)
|
||||||
}
|
}
|
||||||
self.queue[from][hash] = tx
|
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
|
// addTx will add a transaction to the pending (processable queue) list of transactions
|
||||||
|
Loading…
Reference in New Issue
Block a user