mirror of
https://gitlab.com/pulsechaincom/go-pulse.git
synced 2024-12-25 12:57:17 +00:00
core: only post event once per tx & fixed test
This commit is contained in:
parent
4feb5f6f9c
commit
7138404cb0
@ -125,11 +125,6 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TxPool) addTx(tx *types.Transaction) {
|
|
||||||
from, _ := tx.From()
|
|
||||||
self.queue[from] = append(self.queue[from], tx)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (self *TxPool) add(tx *types.Transaction) error {
|
func (self *TxPool) add(tx *types.Transaction) error {
|
||||||
hash := tx.Hash()
|
hash := tx.Hash()
|
||||||
|
|
||||||
@ -147,7 +142,7 @@ func (self *TxPool) add(tx *types.Transaction) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
self.addTx(tx)
|
self.queueTx(tx)
|
||||||
|
|
||||||
var toname string
|
var toname string
|
||||||
if to := tx.To(); to != nil {
|
if to := tx.To(); to != nil {
|
||||||
@ -226,6 +221,19 @@ func (pool *TxPool) Stop() {
|
|||||||
glog.V(logger.Info).Infoln("TX Pool stopped")
|
glog.V(logger.Info).Infoln("TX Pool stopped")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *TxPool) queueTx(tx *types.Transaction) {
|
||||||
|
from, _ := tx.From()
|
||||||
|
self.queue[from] = append(self.queue[from], tx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (pool *TxPool) addTx(tx *types.Transaction) {
|
||||||
|
if _, ok := pool.txs[tx.Hash()]; !ok {
|
||||||
|
pool.txs[tx.Hash()] = tx
|
||||||
|
// Notify the subscribers
|
||||||
|
pool.eventMux.Post(TxPreEvent{tx})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check queue will attempt to insert
|
// check queue will attempt to insert
|
||||||
func (pool *TxPool) checkQueue() {
|
func (pool *TxPool) checkQueue() {
|
||||||
pool.mu.Lock()
|
pool.mu.Lock()
|
||||||
@ -257,9 +265,7 @@ func (pool *TxPool) checkQueue() {
|
|||||||
}
|
}
|
||||||
enonce++
|
enonce++
|
||||||
|
|
||||||
pool.txs[tx.Hash()] = tx
|
pool.addTx(tx)
|
||||||
// Notify the subscribers
|
|
||||||
go pool.eventMux.Post(TxPreEvent{tx})
|
|
||||||
}
|
}
|
||||||
//pool.queue[address] = txs[i:]
|
//pool.queue[address] = txs[i:]
|
||||||
// delete the entire queue entry if it's empty. There's no need to keep it
|
// delete the entire queue entry if it's empty. There's no need to keep it
|
||||||
|
@ -67,7 +67,7 @@ func TestTransactionQueue(t *testing.T) {
|
|||||||
tx.SignECDSA(key)
|
tx.SignECDSA(key)
|
||||||
from, _ := tx.From()
|
from, _ := tx.From()
|
||||||
pool.currentState().AddBalance(from, big.NewInt(1))
|
pool.currentState().AddBalance(from, big.NewInt(1))
|
||||||
pool.addTx(tx)
|
pool.queueTx(tx)
|
||||||
|
|
||||||
pool.checkQueue()
|
pool.checkQueue()
|
||||||
if len(pool.txs) != 1 {
|
if len(pool.txs) != 1 {
|
||||||
@ -79,7 +79,7 @@ func TestTransactionQueue(t *testing.T) {
|
|||||||
from, _ = tx.From()
|
from, _ = tx.From()
|
||||||
pool.currentState().SetNonce(from, 10)
|
pool.currentState().SetNonce(from, 10)
|
||||||
tx.SetNonce(1)
|
tx.SetNonce(1)
|
||||||
pool.addTx(tx)
|
pool.queueTx(tx)
|
||||||
pool.checkQueue()
|
pool.checkQueue()
|
||||||
if _, ok := pool.txs[tx.Hash()]; ok {
|
if _, ok := pool.txs[tx.Hash()]; ok {
|
||||||
t.Error("expected transaction to be in tx pool")
|
t.Error("expected transaction to be in tx pool")
|
||||||
@ -96,9 +96,9 @@ func TestTransactionQueue(t *testing.T) {
|
|||||||
tx1.SignECDSA(key)
|
tx1.SignECDSA(key)
|
||||||
tx2.SignECDSA(key)
|
tx2.SignECDSA(key)
|
||||||
tx3.SignECDSA(key)
|
tx3.SignECDSA(key)
|
||||||
pool.addTx(tx1)
|
pool.queueTx(tx1)
|
||||||
pool.addTx(tx2)
|
pool.queueTx(tx2)
|
||||||
pool.addTx(tx3)
|
pool.queueTx(tx3)
|
||||||
from, _ = tx1.From()
|
from, _ = tx1.From()
|
||||||
pool.checkQueue()
|
pool.checkQueue()
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ func TestTransactionQueue(t *testing.T) {
|
|||||||
t.Error("expected tx pool to be 1 =")
|
t.Error("expected tx pool to be 1 =")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(pool.queue[from]) != 2 {
|
if len(pool.queue[from]) != 3 {
|
||||||
t.Error("expected transaction queue to be empty. is", len(pool.queue[from]))
|
t.Error("expected transaction queue to be empty. is", len(pool.queue[from]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user