Browse Source

Reap takes maxTxs

pull/206/merge
Jae Kwon 9 years ago
parent
commit
2c1504f93c
4 changed files with 13 additions and 19 deletions
  1. +1
    -12
      consensus/state.go
  2. +10
    -5
      mempool/mempool.go
  3. +1
    -1
      mempool/mempool_test.go
  4. +1
    -1
      rpc/core/mempool.go

+ 1
- 12
consensus/state.go View File

@ -877,19 +877,8 @@ func (cs *ConsensusState) createProposalBlock() (block *types.Block, blockParts
return
}
maxBlockSize := config.GetInt("block_size")
// Mempool validated transactions
// if block_size < 0, no txs will be included
var txs []types.Tx
if maxBlockSize >= 0 {
txs = cs.mempool.Reap()
}
// Cap the number of txs in a block
if maxBlockSize > 0 && maxBlockSize < len(txs) {
txs = txs[:maxBlockSize]
}
txs := cs.mempool.Reap(config.GetInt("block_size"))
block = &types.Block{
Header: &types.Header{


+ 10
- 5
mempool/mempool.go View File

@ -183,7 +183,8 @@ func (mem *Mempool) resCbRecheck(req *tmsp.Request, res *tmsp.Response) {
}
// Get the valid transactions remaining
func (mem *Mempool) Reap() []types.Tx {
// If maxTxs is 0, there is no cap.
func (mem *Mempool) Reap(maxTxs int) []types.Tx {
mem.proxyMtx.Lock()
defer mem.proxyMtx.Unlock()
@ -192,13 +193,17 @@ func (mem *Mempool) Reap() []types.Tx {
time.Sleep(time.Millisecond * 10)
}
txs := mem.collectTxs()
txs := mem.collectTxs(maxTxs)
return txs
}
func (mem *Mempool) collectTxs() []types.Tx {
txs := make([]types.Tx, 0, mem.txs.Len())
for e := mem.txs.Front(); e != nil; e = e.Next() {
// maxTxs: 0 means uncapped
func (mem *Mempool) collectTxs(maxTxs int) []types.Tx {
if maxTxs == 0 {
maxTxs = mem.txs.Len()
}
txs := make([]types.Tx, 0, MinInt(mem.txs.Len(), maxTxs))
for e := mem.txs.Front(); e != nil && len(txs) < maxTxs; e = e.Next() {
memTx := e.Value.(*mempoolTx)
txs = append(txs, memTx.tx)
}


+ 1
- 1
mempool/mempool_test.go View File

@ -49,7 +49,7 @@ func TestSerialReap(t *testing.T) {
}
reapCheck := func(exp int) {
txs := mempool.Reap()
txs := mempool.Reap(0)
if len(txs) != exp {
t.Fatalf("Expected to reap %v txs but got %v", exp, len(txs))
}


+ 1
- 1
rpc/core/mempool.go View File

@ -36,6 +36,6 @@ func BroadcastTxSync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) {
}
func UnconfirmedTxs() (*ctypes.ResultUnconfirmedTxs, error) {
txs := mempoolReactor.Mempool.Reap()
txs := mempoolReactor.Mempool.Reap(0)
return &ctypes.ResultUnconfirmedTxs{len(txs), txs}, nil
}

Loading…
Cancel
Save