good morning!!!!

Skip to content
Snippets Groups Projects
Commit 88292f35 authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

core: remove txs from queue in addition to removal of pending

parent 2590a7da
No related branches found
No related tags found
No related merge requests found
......@@ -306,6 +306,27 @@ func (pool *TxPool) checkQueue() {
}
}
func (pool *TxPool) removeTx(hash common.Hash) {
// delete from pending pool
delete(pool.txs, hash)
// delete from queue
out:
for address, txs := range pool.queue {
for i, tx := range txs {
if tx.Hash() == hash {
if len(txs) == 1 {
// if only one tx, remove entire address entry
delete(pool.queue, address)
} else {
pool.queue[address][len(txs)-1], pool.queue[address] = nil, append(txs[:i], txs[i+1:]...)
}
break out
}
}
}
}
func (pool *TxPool) validatePool() {
pool.mu.Lock()
defer pool.mu.Unlock()
......@@ -316,7 +337,7 @@ func (pool *TxPool) validatePool() {
glog.Infof("removed tx (%x) from pool: %v\n", hash[:4], err)
}
delete(pool.txs, hash)
pool.removeTx(hash)
}
}
}
......@@ -111,3 +111,30 @@ func TestTransactionQueue(t *testing.T) {
t.Error("expected transaction queue to be empty. is", len(pool.queue[from]))
}
}
func TestRemoveTx(t *testing.T) {
pool, key := setupTxPool()
tx := transaction()
tx.SignECDSA(key)
from, _ := tx.From()
pool.currentState().AddBalance(from, big.NewInt(1))
pool.queueTx(tx)
pool.addTx(tx)
if len(pool.queue) != 1 {
t.Error("expected queue to be 1, got", len(pool.queue))
}
if len(pool.txs) != 1 {
t.Error("expected txs to be 1, got", len(pool.txs))
}
pool.removeTx(tx.Hash())
if len(pool.queue) > 0 {
t.Error("expected queue to be 0, got", len(pool.queue))
}
if len(pool.txs) > 0 {
t.Error("expected txs to be 0, got", len(pool.txs))
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment