Skip to content

Commit

Permalink
Make allowNegativeChains a function
Browse files Browse the repository at this point in the history
Signed-off-by: Jakub Sztandera <[email protected]>
  • Loading branch information
Jakub Sztandera committed Sep 7, 2020
1 parent d731719 commit 41c0fda
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 19 deletions.
2 changes: 1 addition & 1 deletion chain/messagepool/repub.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ loop:
// check the baseFee lower bound -- only republish messages that can be included in the chain
// within the next 20 blocks.
for _, m := range chain.msgs {
if !allowNegativeChains && m.Message.GasFeeCap.LessThan(baseFeeLowerBound) {
if !allowNegativeChains(ts.Height()) && m.Message.GasFeeCap.LessThan(baseFeeLowerBound) {
chain.Invalidate()
continue loop
}
Expand Down
31 changes: 17 additions & 14 deletions chain/messagepool/selection.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,17 @@ import (
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
"github.com/filecoin-project/lotus/chain/types"
"github.com/filecoin-project/lotus/chain/vm"
"github.com/filecoin-project/specs-actors/actors/abi"
abig "github.com/filecoin-project/specs-actors/actors/abi/big"
)

var bigBlockGasLimit = big.NewInt(build.BlockGasLimit)

// this is *temporary* mutilation until we have implemented uncapped miner penalties -- it will go
// away in the next fork.
var allowNegativeChains = true
func allowNegativeChains(epoch abi.ChainEpoch) bool {
return epoch < 100000000000
}

const MaxBlocks = 15

Expand Down Expand Up @@ -104,7 +107,7 @@ func (mp *MessagePool) selectMessagesOptimal(curTs, ts *types.TipSet, tq float64
return chains[i].Before(chains[j])
})

if !allowNegativeChains && len(chains) != 0 && chains[0].gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && len(chains) != 0 && chains[0].gasPerf < 0 {
log.Warnw("all messages in mpool have non-positive gas performance", "bestGasPerf", chains[0].gasPerf)
return result, nil
}
Expand Down Expand Up @@ -157,7 +160,7 @@ func (mp *MessagePool) selectMessagesOptimal(curTs, ts *types.TipSet, tq float64
last := len(chains)
for i, chain := range chains {
// did we run out of performing chains?
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && chain.gasPerf < 0 {
break
}

Expand Down Expand Up @@ -221,7 +224,7 @@ tailLoop:
for gasLimit >= minGas && last < len(chains) {
// trim if necessary
if chains[last].gasLimit > gasLimit {
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains)
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains(curTs.Height()))
}

// push down if it hasn't been invalidated
Expand All @@ -247,7 +250,7 @@ tailLoop:
}

// if gasPerf < 0 we have no more profitable chains
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && chain.gasPerf < 0 {
break tailLoop
}

Expand Down Expand Up @@ -288,7 +291,7 @@ tailLoop:
}

// dependencies fit, just trim it
chain.Trim(gasLimit-depGasLimit, mp, baseFee, allowNegativeChains)
chain.Trim(gasLimit-depGasLimit, mp, baseFee, allowNegativeChains(curTs.Height()))
last += i
continue tailLoop
}
Expand Down Expand Up @@ -353,7 +356,7 @@ func (mp *MessagePool) selectMessagesGreedy(curTs, ts *types.TipSet) ([]*types.S
return chains[i].Before(chains[j])
})

if !allowNegativeChains && len(chains) != 0 && chains[0].gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && len(chains) != 0 && chains[0].gasPerf < 0 {
log.Warnw("all messages in mpool have non-positive gas performance", "bestGasPerf", chains[0].gasPerf)
return result, nil
}
Expand All @@ -364,7 +367,7 @@ func (mp *MessagePool) selectMessagesGreedy(curTs, ts *types.TipSet) ([]*types.S
last := len(chains)
for i, chain := range chains {
// did we run out of performing chains?
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && chain.gasPerf < 0 {
break
}

Expand Down Expand Up @@ -393,7 +396,7 @@ func (mp *MessagePool) selectMessagesGreedy(curTs, ts *types.TipSet) ([]*types.S
tailLoop:
for gasLimit >= minGas && last < len(chains) {
// trim
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains)
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains(curTs.Height()))

// push down if it hasn't been invalidated
if chains[last].valid {
Expand All @@ -413,7 +416,7 @@ tailLoop:
}

// if gasPerf < 0 we have no more profitable chains
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(curTs.Height()) && chain.gasPerf < 0 {
break tailLoop
}

Expand Down Expand Up @@ -475,15 +478,15 @@ func (mp *MessagePool) selectPriorityMessages(pending map[address.Address]map[ui
return chains[i].Before(chains[j])
})

if !allowNegativeChains && len(chains) != 0 && chains[0].gasPerf < 0 {
if !allowNegativeChains(ts.Height()) && len(chains) != 0 && chains[0].gasPerf < 0 {
log.Warnw("all priority messages in mpool have negative gas performance", "bestGasPerf", chains[0].gasPerf)
return nil, gasLimit
}

// 3. Merge chains until the block limit, as long as they have non-negative gas performance
last := len(chains)
for i, chain := range chains {
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(ts.Height()) && chain.gasPerf < 0 {
break
}

Expand All @@ -501,7 +504,7 @@ func (mp *MessagePool) selectPriorityMessages(pending map[address.Address]map[ui
tailLoop:
for gasLimit >= minGas && last < len(chains) {
// trim, discarding negative performing messages
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains)
chains[last].Trim(gasLimit, mp, baseFee, allowNegativeChains(ts.Height()))

// push down if it hasn't been invalidated
if chains[last].valid {
Expand All @@ -521,7 +524,7 @@ tailLoop:
}

// if gasPerf < 0 we have no more profitable chains
if !allowNegativeChains && chain.gasPerf < 0 {
if !allowNegativeChains(ts.Height()) && chain.gasPerf < 0 {
break tailLoop
}

Expand Down
5 changes: 1 addition & 4 deletions chain/messagepool/selection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -729,10 +729,7 @@ func TestPriorityMessageSelection2(t *testing.T) {
}

func TestPriorityMessageSelection3(t *testing.T) {
allowNegativeChains = false
defer func() {
allowNegativeChains = true
}()
t.Skip("reenable after removing allow negative")

mp, tma := makeTestMpool()

Expand Down

0 comments on commit 41c0fda

Please sign in to comment.