From 41c0fdafde4b2197f6691348a3df2d993d0e583f Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Mon, 7 Sep 2020 21:41:23 +0200 Subject: [PATCH] Make allowNegativeChains a function Signed-off-by: Jakub Sztandera --- chain/messagepool/repub.go | 2 +- chain/messagepool/selection.go | 31 ++++++++++++++++------------- chain/messagepool/selection_test.go | 5 +---- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/chain/messagepool/repub.go b/chain/messagepool/repub.go index bde035985bb..d1b1116c5df 100644 --- a/chain/messagepool/repub.go +++ b/chain/messagepool/repub.go @@ -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 } diff --git a/chain/messagepool/selection.go b/chain/messagepool/selection.go index ad6a4af7d56..16c21d17699 100644 --- a/chain/messagepool/selection.go +++ b/chain/messagepool/selection.go @@ -13,6 +13,7 @@ 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" ) @@ -20,7 +21,9 @@ 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 @@ -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 } @@ -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 } @@ -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 @@ -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 } @@ -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 } @@ -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 } @@ -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 } @@ -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 { @@ -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 } @@ -475,7 +478,7 @@ 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 } @@ -483,7 +486,7 @@ func (mp *MessagePool) selectPriorityMessages(pending map[address.Address]map[ui // 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 } @@ -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 { @@ -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 } diff --git a/chain/messagepool/selection_test.go b/chain/messagepool/selection_test.go index 9f4062ec8f4..29797e6e571 100644 --- a/chain/messagepool/selection_test.go +++ b/chain/messagepool/selection_test.go @@ -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()