Sam Kleinman
48147e1fb9
logging: implement lazy sprinting ( #8898 )
...
shout out to @joeabbey for the inspiration. This makes the lazy
functions internal by default to prevent potential misuse by external
callers.
Should backport cleanly into 0.36 and I'll handle a messy merge into 0.35
2022-07-27 19:16:51 +00:00
Sam Kleinman
d5fb82e414
p2p: make p2p.Channel an interface ( #8967 )
...
This is (#8446 ) pulled from the `main/libp2p` branch but without any
of the libp2p content, and is perhaps the easiest first step to enable
pluggability at the peer layer, and makes it possible hoist shims
(including for, say 0.34) into tendermint without touching the reactors.
2022-07-11 20:22:40 +00:00
Callum Waters
b0ec8a0ea7
mempool: migrate rechecktx to be a consensus parameter ( #8514 )
2022-05-25 23:57:23 +02:00
William Banfield
0cceadf4d4
abci++: add consensus parameter logic to control vote extension require height ( #8547 )
...
This PR makes vote extensions optional within Tendermint. A new ConsensusParams field, called ABCIParams.VoteExtensionsEnableHeight, has been added to toggle whether or not extensions should be enabled or disabled depending on the current height of the consensus engine. Related to: #8453
2022-05-20 17:46:52 -04:00
Thane Thomson
06b1812094
abci++: Propagate vote extensions (RFC 017) ( #8433 )
...
* Add protos for ExtendedCommit
Cherry-pick from e73f0178b72a16ee81f8e856aadf651f2c62ec6e just the
changes to the .proto files, since we have deleted the .intermediate
files.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make proto-gen
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* BlockStore holds extended commit
Cherry-pick 8d504d4b50ec6afbdffe2df7ababbef30e15053d and fix conflicts.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Reshuffle ExtendedCommit and ExtendedCommitSig
Separate the data structures and functions from their Commit-oriented
counterparts to adhere to the current coding style.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix exit condition in blocksync
* Add note to remove TxResult proto
As Sergio pointed out in 3e31aa6f583cdc71e208ed03a82f1d804ec0de49, this
proto message can probably be removed. We should do this in a separate
PR.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Lift termination condition into for loop
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Enforce vote extension signature requirement
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Expand on comment for PeekTwoBlocks for posterity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Isolate TODO more clearly
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make mockery
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix comment
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Make panic output from BlockStore.SaveBlock more readable
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Add helper methods to ExtendedCommitSig and ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix most tests except TestHandshake*
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix store prefix collision
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix TestBlockFetchAtHeight
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove global state from store tests
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
Co-authored-by: Sergio Mena <sergio@informal.systems >
* blocksync: Just return error
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove unused/commented-out code
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Change pool AddBlock function signature to return errors
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Improve legibility of switch statements
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Expand on extended commit requirement in AddBlock description
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Return error without also logging it
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* consensus: Rename short-lived local variable
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* consensus: Allocate TODO to Sergio
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* evidence/pool_test: Inline slice construction
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Rename LoadBlockExtCommit to LoadBlockExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* proto: Remove TODO on TxResult
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Minor format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Reformat ExtendedCommitSig.BlockID
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove NewExtendedCommit constructor
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove NewCommit constructor
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Shorten receiver names for ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Convert ExtendedCommit.Copy to a deep clone
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Assign TODO to Sergio
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Fix legibility nits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Improve legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* store/state: Add TODO to move prefixes to common package
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Propagate validator info to PrepareProposal
In order to propagate validator voting power through to PrepareProposal,
we need to load the validator set info from the height corresponding to
the extended commit that we're passing through to PrepareProposal as the
"LocalLastCommit".
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename local var for clarity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix TestMaxProposalBlockSize
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename local var for clarity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove debug log
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove CommigSig.ForBlock helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove CommigSig.Absent helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove ExtendedCommitSig.ForBlock helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove ExtendedCommitSig.Absent helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* There are no extended commits below the initial height
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix comment grammar
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove JSON encoding from ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Embed CommitSig into ExtendedCommitSig instead of duplicating fields
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename ExtendedCommit vote_extension field to extension for consistency with domain types
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Panic if we peek a block without an extended commit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
* Remove Sergio from TODO
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Increase hard-coded vote extension max size to 1MB
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Remove unnecessary comment
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Ensure no of commit sigs equals validator set length
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Minor legibility improvements
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Improve legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove unused GetVotes function on VoteSet
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor TestMaxProposalBlockSize to construct more realistic extended commit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor buildExtendedCommitInfo to resemble buildLastCommitInfo
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
* abci++: Disable VerifyVoteExtension call on nil precommits (#8491 )
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Require vote extensions on non-nil precommits and not otherwise
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Disable lint
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Increase timeout for TestReactorVotingPowerChange to counter flakiness
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Only sign and verify vote extensions in non-nil precommits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Revert "Disable lint"
This reverts commit 6fffbf9402 .
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Add missing non-nil check uncovered non-deterministically in TestHandshakeReplayAll
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Expand error message for accuracy
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Only call ExtendVote when we make non-nil precommits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Revert "Increase timeout for TestReactorVotingPowerChange to counter flakiness"
This reverts commit af514939db .
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor ValidateBasic for ExtendedCommitSig for legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
Co-authored-by: Sergio Mena <sergio@informal.systems >
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
2022-05-11 07:10:32 -04:00
Callum Waters
a4c3b5cab4
validate block before we persist it ( #8493 )
2022-05-10 17:34:53 +02:00
Thane Thomson
e7451a43e7
blocksync: Honor contexts supplied to BlockPool ( #8447 )
...
* Lift condition into for loop
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Honor contexts in BlockPool
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Only stop timers when necessary
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Optimize timers
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Simplify request interval definition
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove extraneous timer stop
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Convert switch into if
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Eliminate timers
Signed-off-by: Thane Thomson <connect@thanethomson.com >
2022-04-30 14:34:59 -04:00
Sam Kleinman
cf2a00b398
p2p: avoid using p2p.Channel internals ( #8444 )
2022-04-29 17:21:36 -04:00
Sam Kleinman
efd4f4a40b
cleanup: unused parameters ( #8372 )
2022-04-18 16:45:21 -04:00
Sam Kleinman
c372390fea
eventbus: publish without contexts ( #8369 )
2022-04-18 16:28:31 -04:00
Sam Kleinman
9d20e06900
statesync+blocksync: move event publications into the sync operations ( #8274 )
2022-04-07 16:23:36 -04:00
Sam Kleinman
9d1e8eaad4
node: remove channel and peer update initialization from construction ( #8238 )
2022-04-05 13:26:53 +00:00
Sam Kleinman
97f7021712
statesync: merge channel processing ( #8240 )
2022-04-04 12:31:15 -04:00
Sam Kleinman
6af23ff757
state: avoid premature genericism ( #8224 )
2022-03-31 13:10:09 +00:00
William Banfield
e4ae922c33
consensus: update state machine to use the new consensus params ( #8181 )
2022-03-23 11:26:42 -04:00
Sam Kleinman
0bded371c5
testing: logger cleanup ( #8153 )
...
This contains two major changes:
- Remove the legacy test logging method, and just explicitly call the
noop logger. This is just to make the test logging behavior more
coherent and clear.
- Move the logging in the light package from the testing.T logger to
the noop logger. It's really the case that we very rarely need/want
to consider test logs unless we're doing reproductions and running a
narrow set of tests.
In most cases, I (for one) prefer to run in verbose mode so I can
watch progress of tests, but I basically never need to consider
logs. If I do want to see logs, then I can edit in the testing.T
logger locally (which is what you have to do today, anyway.)
2022-03-18 17:39:38 +00:00
Sam Kleinman
13f7501950
blocksync: remove intermediate channel ( #8140 )
...
Based on local testing, I'm now convinced that this is ok, and also I think the fact that the new p2p layer has more caching and queue.
2022-03-17 22:20:59 +00:00
Sam Kleinman
07b46d5a05
blocksync: drop redundant shutdown mechanisms ( #8136 )
2022-03-17 13:30:13 -04:00
William Banfield
68c624f5de
abci++: synchronize PrepareProposal with the newest version of the spec ( #8094 )
...
This change implements the logic for the PrepareProposal ABCI++ method call. The main logic for creating and issuing the PrepareProposal request lives in execution.go and is tested in a set of new tests in execution_test.go. This change also updates the mempool mock to use a mockery generated version and removes much of the plumbing for the no longer used ABCIResponses.
2022-03-15 15:37:30 -04:00
JayT106
d9c9675e2a
p2p+flowrate: rate control refactor ( #7828 )
...
Adding `CurrentTransferRate ` in the flowrate package because only the status of the transfer rate has been used.
2022-03-10 13:48:23 +00:00
Sam Kleinman
c35d6d6e2c
node: pass eventbus at construction time ( #8084 )
...
* node: pass eventbus at construction time
* remove cruft
2022-03-08 13:04:59 +00:00
Sam Kleinman
8df7b6103f
proxy: collapse triforcated abci.Client ( #8067 )
2022-03-06 18:25:50 -05:00
Sam Kleinman
0167f0d527
node: nodes should fetch state on startup ( #8062 )
2022-03-04 12:23:57 -05:00
Sam Kleinman
be83ec6664
p2p: pass start time to flowrate and cleanup constructors ( #7838 )
...
After poking around #7828 , I saw the oppertunity for this cleanup,
which I think is both reasonable on its own, and quite low impact, and
removes the math around process start time.
2022-02-18 13:30:19 +00:00
Sam Kleinman
d187962ec0
blocksync: shutdown cleanup ( #7840 )
...
Now that shutdown is handled by contexts in most cases, I think it's
fair to cleanup the way this reactor shuts down. Additionaly there
were a few cases where the `blockSyncOutBridgeCh` was misshandled and
could have lead to a deadlock which I observed in some tests
2022-02-17 20:42:11 +00:00
Sam Kleinman
28d34d635c
service: change stop interface ( #7816 )
2022-02-17 11:23:32 -05:00
M. J. Fromberger
7e09c2ef43
Clean up temp files more thoroughly after testing. ( #7815 )
...
Our test cases spew a lot of files and directories around $TMPDIR. Make more
thorough use of the testing package's TempDir methods to ensure these are
cleaned up.
In a few cases, this required plumbing test contexts through existing helper
code. In a couple places an explicit path was required, to work around cases
where we do global setup during a TestMain function. Those cases probably
deserve more thorough cleansing (preferably with fire), but for now I have just
worked around it to keep focused on the cleanup.
2022-02-14 06:32:07 -08:00
Sam Kleinman
824960c565
libs/service: regularize Stop semantics and concurrency primitives ( #7809 )
2022-02-14 08:28:29 -05:00
William Banfield
0aa3b0b6fc
Proposer-Based Timestamps Merge ( #7605 )
...
This pull request merges in the changes for implementing Proposer-based timestamps into `master`. The power was primarily being done in the `wb/proposer-based-timestamps` branch, with changes being merged into that branch during development. This pull request represents an amalgamation of the changes made into that development branch. All of the changes that were placed into that branch have been cleanly rebased on top of the latest `master`. The changes compile and the tests pass insofar as our tests in general pass.
### Note To Reviewers
These changes have been extensively reviewed during development. There is not much new here. In the interest of making effective use of time, I would recommend against trying to perform a complete audit of the changes presented and instead examine for mistakes that may have occurred during the process of rebasing the changes. I gave the complete change set a first pass for any issues, but additional eyes would be very appreciated.
In sum, this change set does the following:
closes #6942
merges in #6849
2022-01-26 16:00:23 +00:00
Sam Kleinman
e07c4cdcf2
node: collapse initialization internals ( #7567 )
2022-01-12 15:32:22 -05:00
Sam Kleinman
5bf1bdcfb4
reactors: skip log on some routine cancels ( #7556 )
2022-01-11 12:56:52 -05:00
Sam Kleinman
d5c39f907d
test/factory: pass testing.T around rather than errors for test fixtures ( #7518 )
2022-01-07 15:51:39 -05:00
Sam Kleinman
aa76a367e0
blocksync: standardize construction process ( #7531 )
2022-01-07 13:40:08 -05:00
Sam Kleinman
332163ede6
testing: remove background contexts ( #7509 )
2022-01-05 12:42:57 -05:00
Sam Kleinman
3c8955e4b8
errors: formating cleanup ( #7507 )
2022-01-04 16:11:28 -05:00
Sam Kleinman
430817d9e9
types: remove panic from block methods ( #7501 )
2022-01-03 16:14:26 -05:00
M. J. Fromberger
ab7da86b06
Internalize libs/sync. ( #7450 )
...
Inline the one usage of this library, and remove the lib.
2021-12-14 15:14:30 -08:00
Sam Kleinman
2ff962a63a
log: dissallow nil loggers ( #7445 )
2021-12-14 12:45:13 -05:00
Sam Kleinman
d0e03f01fc
sync: remove special mutexes ( #7438 )
2021-12-13 13:35:32 -05:00
Sam Kleinman
65c0aaee5e
p2p: use recieve for channel iteration ( #7425 )
2021-12-13 11:04:44 -05:00
Sam Kleinman
bd6dc3ca88
p2p: refactor channel Send/out ( #7414 )
2021-12-09 14:03:41 -05:00
Sam Kleinman
cb88bd3941
p2p: migrate to use new interface for channel errors ( #7403 )
...
* p2p: migrate to use new interface for channel errors
* Update internal/p2p/p2ptest/require.go
Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com >
* rename
* feedback
Co-authored-by: M. J. Fromberger <michael.j.fromberger@gmail.com >
2021-12-08 14:05:01 +00:00
Sam Kleinman
892f5d9524
service: cleanup mempool and peer update shutdown ( #7401 )
2021-12-08 08:44:32 -05:00
Sam Kleinman
0ff3d4b89d
service: cleanup close channel in reactors ( #7399 )
2021-12-07 11:40:59 -05:00
Sam Kleinman
a62ac27047
service: remove exported logger from base implemenation ( #7381 )
2021-12-06 10:16:42 -05:00
Sam Kleinman
8a991e288c
service: plumb contexts to all (most) threads ( #7363 )
...
This continues the push of plumbing contexts through tendermint. I
attempted to find all goroutines in the production code (non-test) and
made sure that these threads would exit when their contexts were
canceled, and I believe this PR does that.
2021-12-02 21:38:38 +00:00
Sam Kleinman
a823d167bc
service: cleanup base implementation and some caller implementations ( #7301 )
2021-12-01 09:28:06 -05:00
Sam Kleinman
4af2dbd03b
eventbus: plumb contexts ( #7337 )
...
* eventbus: plumb contexts
* fix lint
2021-11-30 14:24:11 +00:00
Sam Kleinman
6ab62fe7b6
service: remove stop method and use contexts ( #7292 )
2021-11-18 17:56:21 -05:00
Sam Kleinman
d7606777cf
libs/service: pass logger explicitly ( #7288 )
...
This is a very small change, but removes a method from the
`service.Service` interface (a win!) and forces callers to explicitly
pass loggers in to objects during construction rather than (later)
injecting them. There's not a real need for this kind of lazy
construction of loggers, and I think a decent potential for confusion
for mutable loggers.
The main concern I have is that this changes the constructor API for
ABCI clients. I think this is fine, and I suspect that as we plumb
contexts through, and make changes to the RPC services there'll be a
number of similar sorts of changes to various (quasi) public
interfaces, which I think we should welcome.
2021-11-16 16:20:56 +00:00