Anton Kaliaev
c6f612bfc3
subscribe before state emits NewRoundStep
I had to alter events package for that. Hope that's fine.
Refs #847
7 years ago
Anton Kaliaev
bb9aa85d22
copy events and pubsub packages from tmlibs
Refs #847
7 years ago
Anton Kaliaev
c4fef499b6
switch to events package
7 years ago
Anton Kaliaev
b77d5344fc
rename methods for clarity
7 years ago
Anton Kaliaev
21f5f3faa7
use channels to send votes, ... from consensus state to reactor
Refs #847
7 years ago
Zarko Milosevic
b5ac9ede8a
Add rules in gossipVotesForHeight to clarify priorities on messages to send
7 years ago
Jae Kwon
e3c4625e63
Suggested changes to consensus/reactor.go
7 years ago
Zarko Milosevic
83ca46396d
Update gossipVotes routine to align with validBlock mechanism
7 years ago
Jae Kwon
56c9e0da7e
Add back sample output in rpc/core/consensus.go; Tweak DumpConsensusState output for peers
7 years ago
Jae Kwon
edbec10f9e
Expose peer stats for dump_consensus_state
7 years ago
Anton Kaliaev
26c38e770e
fix data race
Closes #1442
```
WARNING: DATA RACE
Write at 0x00c4209de7c8 by goroutine 23:
github.com/tendermint/tendermint/types.(*Block).fillHeader()
/home/vagrant/go/src/github.com/tendermint/tendermint/types/block.go:88 +0x157
github.com/tendermint/tendermint/types.(*Block).Hash()
/home/vagrant/go/src/github.com/tendermint/tendermint/types/block.go:104 +0x121
github.com/tendermint/tendermint/types.(*Block).HashesTo()
/home/vagrant/go/src/github.com/tendermint/tendermint/types/block.go:135 +0x4f
github.com/tendermint/tendermint/consensus.(*ConsensusState).enterPrecommit()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:1037 +0x182d
github.com/tendermint/tendermint/consensus.(*ConsensusState).addVote()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:1425 +0x1a6c
github.com/tendermint/tendermint/consensus.(*ConsensusState).tryAddVote()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:1318 +0x77
github.com/tendermint/tendermint/consensus.(*ConsensusState).handleMsg()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:581 +0x7a9
github.com/tendermint/tendermint/consensus.(*ConsensusState).receiveRoutine()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:539 +0x6c3
Previous read at 0x00c4209de7c8 by goroutine 47:
github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common.(*HexBytes).MarshalJSON()
<autogenerated>:1 +0x52
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.invokeMarshalJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:433 +0x88
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec)._encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:82 +0x8d2
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:50 +0x10e
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSONStruct()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:348 +0x539
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec)._encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:119 +0x83f
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:50 +0x10e
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSONStruct()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:348 +0x539
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec)._encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:119 +0x83f
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:50 +0x10e
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSONStruct()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:348 +0x539
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec)._encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:119 +0x83f
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:50 +0x10e
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSONStruct()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:348 +0x539
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec)._encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:119 +0x83f
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).encodeReflectJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/json-encode.go:50 +0x10e
github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino.(*Codec).MarshalJSON()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/go-amino/amino.go:296 +0x182
github.com/tendermint/tendermint/rpc/lib/types.NewRPCSuccessResponse()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/lib/types/types.go:100 +0x12c
github.com/tendermint/tendermint/rpc/lib/server.makeJSONRPCHandler.func1()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/lib/server/handlers.go:152 +0xab7
net/http.HandlerFunc.ServeHTTP()
/usr/lib/go-1.9/src/net/http/server.go:1918 +0x51
net/http.(*ServeMux).ServeHTTP()
/usr/lib/go-1.9/src/net/http/server.go:2254 +0xa2
github.com/tendermint/tendermint/rpc/lib/server.RecoverAndLogHandler.func1()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/lib/server/http_server.go:138 +0x4fa
net/http.HandlerFunc.ServeHTTP()
/usr/lib/go-1.9/src/net/http/server.go:1918 +0x51
net/http.serverHandler.ServeHTTP()
/usr/lib/go-1.9/src/net/http/server.go:2619 +0xbc
net/http.(*conn).serve()
/usr/lib/go-1.9/src/net/http/server.go:1801 +0x83b
Goroutine 23 (running) created at:
github.com/tendermint/tendermint/consensus.(*ConsensusState).OnStart()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/state.go:250 +0x35b
github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common.(*BaseService).Start()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common/service.go:130 +0x5fc
github.com/tendermint/tendermint/consensus.(*ConsensusReactor).OnStart()
/home/vagrant/go/src/github.com/tendermint/tendermint/consensus/reactor.go:69 +0x1b4
github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common.(*BaseService).Start()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common/service.go:130 +0x5fc
github.com/tendermint/tendermint/consensus.(*ConsensusReactor).Start()
<autogenerated>:1 +0x43
github.com/tendermint/tendermint/p2p.(*Switch).OnStart()
/home/vagrant/go/src/github.com/tendermint/tendermint/p2p/switch.go:177 +0x124
github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common.(*BaseService).Start()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common/service.go:130 +0x5fc
github.com/tendermint/tendermint/node.(*Node).OnStart()
/home/vagrant/go/src/github.com/tendermint/tendermint/node/node.go:416 +0xa1b
github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common.(*BaseService).Start()
/home/vagrant/go/src/github.com/tendermint/tendermint/vendor/github.com/tendermint/tmlibs/common/service.go:130 +0x5fc
github.com/tendermint/tendermint/rpc/test.StartTendermint()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/test/helpers.go:100 +0x5b
github.com/tendermint/tendermint/rpc/client_test.TestMain()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/client/main_test.go:17 +0x4c
main.main()
github.com/tendermint/tendermint/rpc/client/_test/_testmain.go:76 +0x1cd
Goroutine 47 (running) created at:
net/http.(*Server).Serve()
/usr/lib/go-1.9/src/net/http/server.go:2720 +0x37c
net/http.Serve()
/usr/lib/go-1.9/src/net/http/server.go:2323 +0xe2
github.com/tendermint/tendermint/rpc/lib/server.StartHTTPServer.func1()
/home/vagrant/go/src/github.com/tendermint/tendermint/rpc/lib/server/http_server.go:35 +0xb3
```
7 years ago
Ethan Buchman
1a1e4e767b
check max msg size in DecodeMessage
7 years ago
Jae Kwon
fb64314d1c
Review from Anton
7 years ago
Jae Kwon
e4492afbad
Merge
7 years ago
Jae Kwon
45ec5fd170
WIP consensus
7 years ago
Anton Kaliaev
a506cf47ad
protect Record* peerStateStats functions by mutex
Fixes #1414
DATA RACE:
```
Read at 0x00c4214ee940 by goroutine 146:
github.com/tendermint/tendermint/consensus.(*peerStateStats).String()
<autogenerated>:1 +0x57
fmt.(*pp).handleMethods()
/usr/local/go/src/fmt/print.go:596 +0x3f4
fmt.(*pp).printArg()
/usr/local/go/src/fmt/print.go:679 +0x11f
fmt.(*pp).doPrintf()
/usr/local/go/src/fmt/print.go:996 +0x319
fmt.Sprintf()
/usr/local/go/src/fmt/print.go:196 +0x73
github.com/tendermint/tendermint/consensus.(*PeerState).StringIndented()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:1426 +0x573
github.com/tendermint/tendermint/consensus.(*PeerState).String()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:1419 +0x66
github.com/go-logfmt/logfmt.safeString()
/home/ubuntu/go/src/github.com/go-logfmt/logfmt/encode.go:299 +0x9d
github.com/go-logfmt/logfmt.writeValue()
/home/ubuntu/go/src/github.com/go-logfmt/logfmt/encode.go:217 +0x5a0
github.com/go-logfmt/logfmt.(*Encoder).EncodeKeyval()
/home/ubuntu/go/src/github.com/go-logfmt/logfmt/encode.go:61 +0x1dd
github.com/tendermint/tmlibs/log.tmfmtLogger.Log()
/home/ubuntu/go/src/github.com/tendermint/tmlibs/log/tmfmt_logger.go:107 +0x1001
github.com/tendermint/tmlibs/log.(*tmfmtLogger).Log()
<autogenerated>:1 +0x93
github.com/go-kit/kit/log.(*context).Log()
/home/ubuntu/go/src/github.com/go-kit/kit/log/log.go:124 +0x248
github.com/tendermint/tmlibs/log.(*tmLogger).Debug()
/home/ubuntu/go/src/github.com/tendermint/tmlibs/log/tm_logger.go:64 +0x1d0
github.com/tendermint/tendermint/consensus.(*PeerState).PickSendVote()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:1059 +0x242
github.com/tendermint/tendermint/consensus.(*ConsensusReactor).gossipVotesForHeight()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:789 +0x6ef
github.com/tendermint/tendermint/consensus.(*ConsensusReactor).gossipVotesRoutine()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:723 +0x1039
Previous write at 0x00c4214ee940 by goroutine 21:
github.com/tendermint/tendermint/consensus.(*PeerState).RecordVote()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:1242 +0x15a
github.com/tendermint/tendermint/consensus.(*ConsensusReactor).Receive()
github.com/tendermint/tendermint/consensus/_test/_obj_test/reactor.go:309 +0x32e6
github.com/tendermint/tendermint/p2p.createMConnection.func1()
/home/ubuntu/go/src/github.com/tendermint/tendermint/p2p/peer.go:365 +0xea
github.com/tendermint/tendermint/p2p/conn.(*MConnection).recvRoutine()
/home/ubuntu/go/src/github.com/tendermint/tendermint/p2p/conn/connection.go:531 +0x779
```
7 years ago
Ethan Buchman
5f548c7679
consensus: close pubsub channels. fixes #1372
7 years ago
Thomas Corbière
2644a529f0
Fix lint errors ( #1390 )
* use increment and decrement operators.
* remove unnecessary else branches.
* fix package comment with leading space.
* fix receiver names.
* fix error strings.
* remove omittable code.
* remove redundant return statement.
* Revert changes (code is generated.)
* use cfg as receiver name for all config-related types.
* use lsi as the receiver name for the LastSignedInfo type.
7 years ago
Anton Kaliaev
2c445059f2
mark peer as good every blocksToContributeToBecomeGoodPeer blocks
if enough peers are marked good eventually some will become unmarked, so
good to have a force that will continue to cycle them back into good
territory!
Refs #1317
7 years ago
Anton Kaliaev
ab59f64f57
test we record votes and block parts
Refs #1317
7 years ago
Anton Kaliaev
42e3457884
fix tracking of votes and blockparts to not allow old information
also remove mutex
Refs #1317
7 years ago
Anton Kaliaev
31f3dd42e7
mark peer as good only once
or should we do it every N blocks?
Refs #1317
7 years ago
Anton Kaliaev
5fab8e404d
replace magic number with blocksToContributeToBecomeGoodPeer const
Refs #1317
7 years ago
Anton Kaliaev
86ddf17db0
add a todo
Refs #1281
7 years ago
Anton Kaliaev
a655500047
fix copy-pasted comment [ci skip]
7 years ago
Anton Kaliaev
714f885dac
mark peer as good if it contributed enough votes or block parts
Refs #1147
7 years ago
Anton Kaliaev
266974cb59
stop peer if it sends invalid vote
7 years ago
Anton Kaliaev
4242352852
stop peer on decoding error
7 years ago
Anton Kaliaev
2a24ae90c1
fixes from Jae's review
1. remove pointer
2. add Quit() method to Service interface
7 years ago
Ethan Buchman
ee674f919f
StopPeerForError in blockchain and consensus
7 years ago
Ethan Buchman
a17105fd46
p2p: peer.Key -> peer.ID
7 years ago
Ethan Buchman
0acca7fe69
final updates for state
7 years ago
Ethan Buchman
289d92c97d
consensus: remove log stmt. closes #987
7 years ago
Ethan Buchman
cb3ac6987e
remove some debugs
7 years ago
Ethan Buchman
5d04ccbe51
excessive logging. update tmlibs for timer fix
7 years ago
Ethan Buchman
0ec7909ec3
more logging in p2p and consensus
7 years ago
Anton Kaliaev
922af7c405
int64 height
uint64 is considered dangerous. the details will follow in a blog post.
7 years ago
Anton Kaliaev
b3492356e6
uint64 height (Refs #911 )
7 years ago
Anton Kaliaev
69b5da766c
service#Start, service#Stop signatures were changed
See https://github.com/tendermint/tmlibs/issues/45
7 years ago
Zach Ramsay
563faa98de
address comments, pr #643
7 years ago
Zach Ramsay
8f0237610e
linting errors: clean it all up
7 years ago
Zach Ramsay
331857c9e6
linting: apply errcheck part2
7 years ago
Zach Ramsay
46ccbcbff6
linting: apply 'gofmt -s -w' throughout
7 years ago
Ethan Buchman
0448c2b437
consensus: fix LastCommit log
7 years ago
Anton Kaliaev
a1cdc2b68a
set logger for peer's MConnection
7 years ago
Anton Kaliaev
ad03491ee6
remove duplicated key
7 years ago
Ethan Buchman
4b9dfc8990
consensus: fix for initializing block parts during catchup
7 years ago
Ethan Buchman
3b81d3fea4
consensus: ensure prs.ProposalBlockParts is initialized. fixes #810
7 years ago
Ethan Buchman
d71aed309f
some minor changes
7 years ago
Anton Kaliaev
61d76a273f
fixes from Bucky's and Emmanuel's reviews
7 years ago