Łukasz Magiera
f90cfda2e6
wallet: Add interface layer
2020-09-04 22:18:03 +02:00
vyzo
ad8d550d73
remove unused ts argument from Trim, replace it with allowNegative specifier
2020-09-04 22:32:30 +03:00
vyzo
6d53862142
republish messages even if the chains have negative performance
2020-09-04 22:16:10 +03:00
Raúl Kripalani
1ec534d607
Merge branch 'master' into inmem-journal
2020-09-04 10:55:40 +01:00
Raúl Kripalani
905168e72e
fix lint errors.
2020-09-04 10:54:56 +01:00
Łukasz Magiera
01449e486c
Merge pull request #3528 from filecoin-project/fix/sele-gas-reward
...
Fix calculation of GasReward in messagepool
2020-09-03 20:41:28 +02:00
Jakub Sztandera
8111b227c4
Appease the linter
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 20:19:01 +02:00
Jakub Sztandera
8bb471bccd
Add getGasPerf test
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 20:19:01 +02:00
Jakub Sztandera
5074b526d0
Fix calculation of GasReward in messagepool
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-09-03 19:36:03 +02:00
vyzo
d20b6adfd2
refuse to add duplicates in the mpool
2020-09-03 15:28:44 +03:00
vyzo
a4c650316a
fix test
2020-09-03 15:28:44 +03:00
vyzo
28f57667f0
cap MaxNonceGap to 4, add delay between batch messages during republish
2020-09-03 15:28:44 +03:00
vyzo
f53d2e3a46
cap MaxNonceGap to 16
2020-09-03 15:28:44 +03:00
vyzo
7b76aa2078
warn when adding a nonce-gapped message to the mpool
2020-09-03 15:28:44 +03:00
vyzo
da6d384300
fix tests
2020-09-03 15:28:44 +03:00
vyzo
4c489d18a2
track expected nonce in mpool, refuse messages with large gaps
2020-09-03 15:28:44 +03:00
Raúl Kripalani
3206f92063
Merge branch 'master' into inmem-journal
2020-09-02 19:50:52 +01:00
Aayush Rajasekaran
93814cc85a
Merge pull request #3392 from filecoin-project/fix/mpool-priority-selection
...
Tweak priority selection to not select negative perfoming chains
2020-08-31 19:22:12 -04:00
刘林欣
0926f95979
remove the unnecessary err check
2020-08-31 15:11:45 +08:00
vyzo
648130eec5
don't include negative performing chains in priority message selection
2020-08-29 15:55:19 +03:00
vyzo
708a8b6543
flag to allow add to skip limit check
...
essential for correctness in the revert case
2020-08-28 00:04:21 +03:00
vyzo
038e83b647
log error if we trip over too many pending messages for actor
2020-08-26 22:55:39 +03:00
vyzo
82ef0529d8
named error for too many pending messages
2020-08-26 22:48:03 +03:00
vyzo
6abfbbddd5
fix tests
2020-08-26 22:44:47 +03:00
vyzo
ad889a7240
rate limit messages per actor by enforcing maximum pending message limit
2020-08-26 22:40:10 +03:00
vyzo
d3e95d6b77
cast min base fee to uint64
2020-08-26 21:37:32 +03:00
vyzo
8db262c941
check gas fee cap for minimum value
2020-08-26 21:23:28 +03:00
vyzo
793eda986b
comment out Value inclusion for required funds tracking
...
we are not sure whether we want it yet.
2020-08-26 21:10:46 +03:00
vyzo
8848c549a0
move msg serialization outside of lock, consistently use curTs
2020-08-26 19:42:56 +03:00
vyzo
4919a005d3
always verify message min gas
2020-08-26 19:37:27 +03:00
Raúl Kripalani
cb8e105a94
reduce diff noise.
2020-08-26 16:44:06 +01:00
Raúl Kripalani
efdfd3ee3e
Merge branch 'master' into inmem-journal
2020-08-26 16:38:23 +01:00
Raúl Kripalani
4e1ef09751
make journal a global var.
2020-08-26 16:09:37 +01:00
vyzo
7a7066896e
better code for getRequiredFunds
2020-08-26 15:37:42 +03:00
vyzo
a2c0c10d2a
correctly account for message replacement in required funds tracking
2020-08-26 15:27:09 +03:00
vyzo
c473d3c682
rename ErrValidationFailure to ErrSoftValidationFailure
...
to make it clear to readers that this failure is soft; we might be out of sync.
2020-08-26 15:16:04 +03:00
vyzo
87e6c0973a
include message Value only in soft validation failures
2020-08-26 15:13:50 +03:00
vyzo
78876947a4
ErrBroadcastAnyway is now ErrValidationFailure
2020-08-26 15:03:13 +03:00
vyzo
b59f58435c
fix tests
2020-08-26 14:58:32 +03:00
vyzo
4adb83eaae
check aggregate pending message required funds against balance
2020-08-26 14:58:26 +03:00
vyzo
4ac9828b0c
track required funds in message set
2020-08-26 14:38:26 +03:00
vyzo
77f6e0d4f8
refactor balance check, apply it in PushWithNonce
2020-08-26 14:23:34 +03:00
vyzo
835dbfe001
check message before adding in PushWithNonce
2020-08-26 14:13:46 +03:00
vyzo
da9630c561
remove duplicate check
...
gas limit is checked against block gas limit in ValidForBlockInclusion
2020-08-26 14:02:34 +03:00
vyzo
6b3282150b
appease linter
2020-08-25 14:03:49 +03:00
vyzo
58cfac9f67
add test for message republish
2020-08-25 13:57:02 +03:00
vyzo
62b15ecc12
remove bug line
2020-08-25 13:41:20 +03:00
vyzo
6b9d392d0e
add another priority selection test
2020-08-25 13:36:03 +03:00
vyzo
9c68123ede
add test for Updates, fix behaviour for closed mpool
2020-08-25 13:29:09 +03:00
vyzo
7049b6478c
add test for Clear
2020-08-25 13:24:11 +03:00
vyzo
0e6d34c0c9
add test for loadLocal
2020-08-25 13:16:55 +03:00
vyzo
a01fa11a26
exercise debug code, fix deadlock
2020-08-25 13:03:50 +03:00
vyzo
7e81081899
initialize mpool ts _before_ loading local messages
2020-08-25 08:49:15 +03:00
Jakub Sztandera
8cc8a277a1
Remove Println
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:37:35 +02:00
whyrusleeping
a5c56dde10
add test to verify actor state fix works properly
2020-08-24 19:35:54 -07:00
Jakub Sztandera
7f427b8001
Fix harness weirdness
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:12:33 +02:00
Jakub Sztandera
33b12782e4
Take into account messages in current tispet by executing it
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 04:02:06 +02:00
Jakub Sztandera
b2ff231c48
Fix error fmt string
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 03:14:52 +02:00
Jakub Sztandera
d921791c55
Add comment
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 03:13:43 +02:00
whyrusleeping
05d65c3f88
slightly better than panicking
2020-08-24 17:40:12 -07:00
whyrusleeping
cf3298cd04
more correctly handle discrepancies between mempools head and the mining base
2020-08-24 17:21:03 -07:00
Jakub Sztandera
aacfcba400
Check ValidForBlockInclusion in mpool
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-25 01:01:16 +02:00
Łukasz Magiera
0806fd651a
Merge pull request #3183 from filecoin-project/steb/lint-all
...
Lint everything
2020-08-22 21:47:41 +02:00
vyzo
817358f1bb
better semantics for mpool clear local argument
...
local messages should be kept unless the parameter is true
2020-08-21 23:48:35 +03:00
vyzo
087955e927
add localonly option to MpoolClear
2020-08-21 23:32:41 +03:00
vyzo
e33d398c33
remove pending local messages from the datastore when clearing the mpool
2020-08-21 23:32:41 +03:00
vyzo
3027283756
add MpoolClear api
2020-08-21 23:32:41 +03:00
vyzo
161cb32078
recover from errors in head change
2020-08-21 23:32:41 +03:00
Steven Allen
5733c71c50
Lint everything
...
We were ignoring quite a few error cases, and had one case where we weren't
actually updating state where we wanted to. Unfortunately, if the linter doesn't
pass, nobody has any reason to actually check lint failures in CI.
There are three remaining XXXs marked in the code for lint.
2020-08-20 20:46:36 -07:00
vyzo
6d9707c784
fix OptimalSelection3 test
2020-08-18 22:24:07 +03:00
Jakub Sztandera
e0b72ba049
Reduce number of runs to 1
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
4d01cbfb62
Increase precision of output
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8d4427a8bc
add best ticket reward to tests
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8bca545cab
Add test for winnerProba
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
9c98cf8bc1
Fix blockProbabilities
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
Jakub Sztandera
8acd926636
Use conditional probability for noWinners, fix tests
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-18 21:10:04 +02:00
vyzo
4287f76ed4
fix deadlock in mpool.Push
2020-08-18 10:19:46 +03:00
vyzo
3b6e2bdb7b
trigger early republish from head changes
2020-08-17 10:03:39 +03:00
vyzo
a5d2ec0df8
appease linter
2020-08-14 10:12:55 +03:00
vyzo
b844f70a3c
make competitve selection test parameteric on distribution function, add test for Zipf distribution
2020-08-14 10:09:25 +03:00
Jakub Sztandera
f27a122787
Use Zipf distribution for messages
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 20:22:56 +02:00
vyzo
9aa8791920
make selection2 test less touchy
2020-08-13 20:02:08 +03:00
vyzo
2eff03fa1f
small fixes in optimal selection
...
1. Remove noop updates from the previous dependencies
2. Update subsequent dependencies, which was the intention
2020-08-13 19:49:07 +03:00
Jakub Sztandera
0daed04c07
Don't run the test 50 times
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
09f5a64ce0
use gasPerf for negative performance check
...
it's the same in actually because effPerf<0 iff gasPerf<0, but we should be consistent
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
f3eec33bec
make OptimalSelection3 test pass
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
1aa8b6cab2
make OptimalSelection2 test pass
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
0f5598e59b
compute average boost in tests
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
5e8ae7498a
only adjust next chains if they have positve perf
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:11 +02:00
vyzo
7bbf1c7db2
don't mix negative performing chains with their parent, add some comments
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
Jakub Sztandera
f35555964d
Better "optimal selection
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
vyzo
d25f386bb5
mixin the previous chain's effective performance to capture effect of dependencies
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-13 14:08:10 +02:00
Steven Allen
3ef3f570fb
Fix lint errors an broken tests
2020-08-12 23:16:44 +02:00
Łukasz Magiera
43586ed9a1
Merge pull request #3000 from filecoin-project/feat/mpool-add-semaphore
...
Add semaphore in push and friends to reduce lock contention
2020-08-12 21:53:59 +02:00
Jakub Sztandera
f7c222e42e
Validate message pool config, validate GasPremium < GasFeeCap
...
don't use configured RBF for mpool
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-12 20:31:34 +02:00
vyzo
f2ac17845b
relinquish the lock while signing in PushWithNonce
2020-08-12 20:26:58 +03:00
vyzo
7be18df6ea
add semaphore in push and friends to reduce lock contention
2020-08-12 10:38:40 +03:00
vyzo
472e502218
fix republishing chain selection to account for edge case of inordinately long chains
2020-08-12 09:41:02 +03:00
vyzo
7b16fe3792
hold ts lock longer
2020-08-12 09:18:04 +03:00
vyzo
47f81f1ad6
increase repub message limit to 30
2020-08-12 09:13:57 +03:00
vyzo
cf34fe5cc3
extend the republish interval to something more reasonable
...
pubsub timecache duration + 5 blocks + propagation delay
2020-08-12 09:13:57 +03:00
vyzo
7396212c89
slightly increase the replublish interval to include the propagation delay as well
2020-08-12 09:13:57 +03:00
vyzo
e876617c82
new message republishing logic
2020-08-12 09:13:57 +03:00
vyzo
42951d05a5
refactor messagepool provider out of the main messagepool implementation
2020-08-12 09:13:57 +03:00
Jakub Sztandera
2efb18f677
Small fixes to mpool Trim
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 23:55:06 +02:00
vyzo
9032163c5a
turn probability eyeballing into an actual test
2020-08-11 20:47:50 +03:00
vyzo
a467deede6
fix typos in comment
2020-08-11 20:20:59 +03:00
vyzo
2aaf14b558
mute timing logs if they are under 1ms
2020-08-11 20:00:51 +03:00
vyzo
d3baf2b9eb
fix edge case in chain creation
2020-08-11 19:32:28 +03:00
Jakub Sztandera
56e3f7da7d
Fix getGasReward and Trim
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 17:18:46 +02:00
Jakub Sztandera
4da3aedacb
Work on competitve test a bit
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
vyzo
0091f3a9ce
add competitive selection test
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
vyzo
268d435ce0
add some optimal selection tests
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
Jakub Sztandera
2057433f48
Add needed files
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
Jakub Sztandera
d3c8f295c2
Use real blockProbabilities function
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
vyzo
080614098d
fix edge case of effective performance for chains that dont fit in any partition
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:27 +02:00
vyzo
8eff3a25f9
use BlockGasLimit instead of residual for partitioning
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:26 +02:00
vyzo
ca803d99fe
nearly optimal message selection for a given ticket quality
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-11 16:14:20 +02:00
Raúl Kripalani
200b0f72cc
mpool/repub: only record in journal if actually repubbing.
2020-08-11 15:06:13 +01:00
Raúl Kripalani
8f19fff1ec
fix tests.
2020-08-11 14:47:02 +01:00
Raúl Kripalani
92598237c3
Merge branch 'next' into inmem-journal
2020-08-11 12:41:11 +01:00
Łukasz Magiera
0d1174cb81
Merge pull request #2924 from filecoin-project/feat/mpool-cfg-overesitm
...
Add GasLimitOverestimation to mpool config
2020-08-10 11:33:05 +02:00
Jakub Sztandera
3710f33e14
Don't reject messages that don't pass RBF, ignore them
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-09 03:17:40 +02:00
Jakub Sztandera
5ea9df1824
Use 25% overesitm
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-09 02:22:37 +02:00
Jakub Sztandera
a826877ee3
Reduce overesitm to 10%, remove pledgeSectors test rate limit
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-09 00:37:24 +02:00
Jakub Sztandera
46fd9d5e80
Quiet down pending messages, fix GasLimit estimation, reduce fee cap
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-09 00:29:59 +02:00
vyzo
bcb33d75d0
Merge pull request #2918 from filecoin-project/feat/mpool-tests
...
Some more mpool tests
2020-08-08 22:03:07 +03:00
Jakub Sztandera
5f157affdd
Add GasLimitOverestimation to mpool config
...
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2020-08-08 17:09:47 +02:00
vyzo
9bc5d9489d
also log chain creation timings
2020-08-08 17:07:37 +03:00
vyzo
b469277046
use structured logging for timings
2020-08-08 16:59:08 +03:00
vyzo
809e7d5390
add timings to various components of message selection
2020-08-08 16:51:30 +03:00
vyzo
4cdb5f7b81
add unit test for priority message selection
2020-08-08 11:22:47 +03:00
vyzo
2d9f2c7e72
add unit test for message skipping in chain creation
2020-08-08 11:16:50 +03:00
Łukasz Magiera
e65db33d77
Merge pull request #2909 from filecoin-project/fix/mpool-bug
...
fix mpool bugs
2020-08-08 01:32:28 +02:00
vyzo
4c8c8f48f1
skip messages with nonce before the current nonce in chain creation
2020-08-08 02:16:56 +03:00
vyzo
01b8a6de94
remove bug line
2020-08-08 01:45:34 +03:00
Łukasz Magiera
af15273f71
gas: Corruntly do float math
2020-08-08 00:41:57 +02:00
vyzo
7e16e3e220
satisfy linter
2020-08-07 20:20:22 +03:00
vyzo
f6e8f02fd2
add persistence for mpool config
2020-08-07 20:10:09 +03:00
vyzo
1b56b88132
add cooldown to message pruning
2020-08-07 19:51:49 +03:00
vyzo
c735d0da0e
fix test compilation issue
2020-08-07 19:51:49 +03:00
vyzo
b40346e1ea
never prune priority actor messages
2020-08-07 19:51:49 +03:00
vyzo
56c2894c80
add priority actor message selection
2020-08-07 19:51:49 +03:00
vyzo
42e1338ffe
mpool config
2020-08-07 19:51:49 +03:00
Łukasz Magiera
60545e6722
mempool: Allow 0 gasPerf chains
2020-08-07 14:43:32 +02:00
Łukasz Magiera
5a50d293b9
Merge pull request #2891 from filecoin-project/feat/mpool-negative-chain-pruning
...
some small improvements in the handling of non-performing chains
2020-08-07 10:14:09 +02:00
vyzo
b31b322e77
also check for 0 in early gasPerf check
2020-08-07 10:55:43 +03:00
vyzo
26f025bc96
some small improvements in the handling of non-performing chains
...
1. We break the message accumulation the first time we see a chain with gasPerf <= 0
as it is not profitable to include them in the block
2. When trimming, we remove also trim negative performing messages to make the trimmed
chain profitable.
2020-08-07 10:33:00 +03:00
vyzo
e977649f29
add regression test for selection trimming
2020-08-07 10:10:54 +03:00
Łukasz Magiera
0612c2eab9
Merge remote-tracking branch 'origin/next' into feat/dyn-base-fee
2020-08-07 04:15:42 +02:00