Commit Graph

258 Commits

Author SHA1 Message Date
Ethan Buchman 0448c2b437 consensus: fix LastCommit log 2017-11-12 06:40:27 +00:00
Anton Kaliaev a1cdc2b68a
set logger for peer's MConnection 2017-11-09 14:57:40 -05:00
Anton Kaliaev ad03491ee6
remove duplicated key 2017-11-09 13:37:29 -05:00
Ethan Buchman 4b9dfc8990 consensus: fix for initializing block parts during catchup 2017-11-09 18:14:41 +00:00
Ethan Buchman c0e2649ed6
Merge pull request #788 from tendermint/feature/548-indexing-tags
new pubsub package
2017-11-08 01:02:48 +00:00
Ethan Buchman 3b81d3fea4 consensus: ensure prs.ProposalBlockParts is initialized. fixes #810 2017-11-07 17:14:40 +00:00
Ethan Buchman d71aed309f some minor changes 2017-10-30 22:52:03 -04:00
Anton Kaliaev 61d76a273f
fixes from Bucky's and Emmanuel's reviews 2017-10-30 11:12:01 -05:00
Anton Kaliaev 1c1c68df8d
fixes from my own review 2017-10-30 00:32:23 -05:00
Anton Kaliaev f6539737de
new pubsub package
comment out failing consensus tests for now

rewrite rpc httpclient to use new pubsub package

import pubsub as tmpubsub, query as tmquery

make event IDs constants
EventKey -> EventTypeKey

rename EventsPubsub to PubSub

mempool does not use pubsub

rename eventsSub to pubsub

new subscribe API

fix channel size issues and consensus tests bugs

refactor rpc client

add missing discardFromChan method

add mutex

rename pubsub to eventBus

remove IsRunning from WSRPCConnection interface (not needed)

add a comment in broadcastNewRoundStepsAndVotes

rename registerEventCallbacks to broadcastNewRoundStepsAndVotes

See https://dave.cheney.net/2014/03/19/channel-axioms

stop eventBuses after reactor tests

remove unnecessary Unsubscribe

return subscribe helper function

move discardFromChan to where it is used

subscribe now returns an err

this gives us ability to refuse to subscribe if pubsub is at its max
capacity.

use context for control overflow

cache queries

handle err when subscribing in replay_test

rename testClientID to testSubscriber

extract var

set channel buffer capacity to 1 in replay_file

fix byzantine_test

unsubscribe from single event, not all events

refactor httpclient to return events to appropriate channels

return failing testReplayCrashBeforeWriteVote test

fix TestValidatorSetChanges

refactor code a bit

fix testReplayCrashBeforeWriteVote

add comment

fix TestValidatorSetChanges

fixes from Bucky's review

update comment [ci skip]

test TxEventBuffer

update changelog

fix TestValidatorSetChanges (2nd attempt)

only do wg.Done when no errors

benchmark event bus

create pubsub server inside NewEventBus

only expose config params (later if needed)

set buffer capacity to 0 so we are not testing cache

new tx event format: key = "Tx" plus a tag {"tx.hash": XYZ}

This should allow to subscribe to all transactions! or a specific one
using a query: "tm.events.type = Tx and tx.hash = '013ABF99434...'"

use TimeoutCommit instead of afterPublishEventNewBlockTimeout

TimeoutCommit is the time a node waits after committing a block, before
it goes into the next height. So it will finish everything from the last
block, but then wait a bit. The idea is this gives it time to hear more
votes from other validators, to strengthen the commit it includes in the
next block. But it also gives it time to hear about new transactions.

waitForBlockWithUpdatedVals

rewrite WAL crash tests

Task:
test that we can recover from any WAL crash.

Solution:
the old tests were relying on event hub being run in the same thread (we
were injecting the private validator's last signature).

when considering a rewrite, we considered two possible solutions: write
a "fuzzy" testing system where WAL is crashing upon receiving a new
message, or inject failures and trigger them in tests using something
like https://github.com/coreos/gofail.

remove sleep

no cs.Lock around wal.Save

test different cases (empty block, non-empty block, ...)

comments

add comments

test 4 cases: empty block, non-empty block, non-empty block with smaller part size, many blocks

fixes as per Bucky's last review

reset subscriptions on UnsubscribeAll

use a simple counter to track message for which we panicked

also, set a smaller part size for all test cases
2017-10-30 00:32:22 -05:00
Ethan Buchman 591dd9e662 dont catchupReplay on wal if we fast synced 2017-10-27 10:46:19 -04:00
Anton Kaliaev dc0e8de9b0
extract some of the consensus types into ./types
so they can be used in rpc/core/types/responses.go.

```
So, it seems like we could use the actual structs here, but we don't want to have to import consensus to get them, as then clients are importing too much crap. So probably we should move some types from consensus into consensus/types so we can import.

Will these raw messages be identical to:

type ResultDumpConsensusState struct {
  RoundState cstypes.RoundState
  PeerRoundStates map[string]cstypes.PeerRoundState
}
```
https://github.com/tendermint/tendermint/pull/724#discussion_r143598193
2017-10-10 12:39:21 +04:00
Ethan Buchman aea8629272 peer interface 2017-09-15 18:40:59 -04:00
Ethan Buchman 35a4912449 dont panic on getVoteBitArray 2017-08-16 00:43:55 -04:00
Ethan Buchman c5a657f540 consensus: test proposal heartbeat 2017-08-10 01:24:23 -04:00
Ethan Buchman c9e11de2a7 consensus: log ProposalHeartbeat msg 2017-08-10 00:12:16 -04:00
Ethan Buchman 49278a7f9c Merge pull request #579 from tendermint/feature/sync_status
Add fast-sync status to Status() call
2017-08-09 23:51:25 -04:00
Ethan Buchman b0728260e9 comments 2017-08-09 23:51:09 -04:00
Ethan Buchman 92ada55e5a make conR.FastSync() thread safe 2017-08-09 14:55:21 -04:00
Ethan Buchman b8ac67e240 some fixes 2017-08-03 13:25:26 -04:00
Ethan Buchman ab753abfa0 Proposer->Proposal; sign heartbeats 2017-07-29 17:04:28 -04:00
Ethan Buchman 530626dab7 broadcast proposer heartbeat msg 2017-07-29 11:45:02 -04:00
Ethan Buchman e9b7221292 consensus: more comments 2017-07-20 00:59:28 -04:00
ramil 6f8d385dfa fast sync status 2017-07-17 09:44:23 +03:00
Ethan Buchman 5f6b996d22 breakup some long lines; add more comments to consensus reactor 2017-07-09 18:38:59 -04:00
Ethan Buchman 74a3a2b56a fix comments 2017-07-09 18:01:25 -04:00
Adrian Brink b07d01f102 Add more comments on public functions and extra logging during 'enterPrevote'
Signed-off-by: Adrian Brink <adrian@brink-holdings.com>
2017-07-09 20:35:48 +02:00
Ethan Buchman 612726d9f6 consensus: better logging 2017-07-07 16:58:16 -04:00
Ethan Buchman ca8c34f966 add consensus reactor sleep durations to the config 2017-07-07 12:39:40 -04:00
Ethan Buchman 2750343de5 Merge branch 'apply-megacheck' into unstable 2017-06-23 21:38:22 -04:00
Anton Kaliaev b4ece65726
standardize key for errors (should be "err") 2017-06-14 12:50:49 +04:00
Anton Kaliaev 562dd67e16
fix invalid keys (space is prohibited by logfmt encoder) 2017-06-14 12:50:01 +04:00
zramsay cf31f8d06f core: apply megacheck vet tool (unused, gosimple, staticcheck) 2017-05-29 23:11:40 -04:00
Anton Kaliaev f8fdbe3dbc
changes as per Bucky's review 2017-05-13 16:22:51 +02:00
Anton Kaliaev c9cd8de9c6
set logger 2017-05-13 10:25:00 +02:00
Anton Kaliaev f803544195
new logging 2017-05-13 10:24:58 +02:00
Ethan Buchman 07e59e63f9 TMEventDataInner 2017-04-28 17:57:06 -04:00
Ethan Buchman 56c60fba23 go-p2p -> tendermint/p2p 2017-04-21 18:19:41 -04:00
Ethan Buchman d1926bcad1 use tmlibs 2017-04-21 18:12:54 -04:00
Anton Kaliaev 2c724d5eee
remove warning messages in favor of "Send failed" 2017-02-21 13:25:16 +04:00
Anton Kaliaev 6dbe9febce
log warning if peer send failed (Refs #174)
make lint happy

remove dead code

remove not needed go-common dependency

check peer.Send failures (Refs #174)
2017-02-21 11:57:33 +04:00
Ethan Buchman 99b068b313 BlockMeta uses BlockID 2017-02-14 17:06:58 -05:00
Jae Kwon 43fdc4a1ce Fix #341 2017-01-11 08:57:10 -08:00
Ethan Buchman f30a9752e2 more fixes from review 2016-12-23 11:11:22 -05:00
Ethan Buchman b126ca0606 consensus: no internal vars in reactor.String() 2016-12-20 00:17:37 -05:00
Ethan Buchman 0fe53dc5cf remove privValIndex; Stale->AppHashIsStale 2016-12-02 00:27:36 -05:00
Ethan Buchman 2f9063c1d6 consensus: test validator set change 2016-11-23 18:20:46 -05:00
Ethan Buchman a3d863f83b consensus: track index of privVal 2016-11-22 20:38:14 -05:00
Ethan Buchman c6a648fad7 consensus: lock before loading commit 2016-11-16 16:47:31 -05:00
Jae Kwon 95c8bb4252 Fixing issues from review in #229 2016-11-15 18:48:35 -05:00
Jae Kwon c1729addce Fix BFT issue where VoteSetMaj23Message wasn't being sent where prs.Round == blockStore.Round() 2016-11-15 18:48:35 -05:00
Jae Kwon 3e3b034252 Make ConsensusReactor use ConsensusState's blockstore; debug functions 2016-11-15 18:48:34 -05:00
Ethan Buchman 9d0c7f6ec7 fix bft test. still halts 2016-11-15 18:47:19 -05:00
Ethan Buchman c5a803a146 DataChannel -> StateChannel for Maj23Msg 2016-11-15 18:45:36 -05:00
Ethan Buchman 7afcf92539 consensus: fix panic on POLRound=-1 2016-11-15 18:45:36 -05:00
Ethan Buchman 57da2e4af5 make byzantine logic testable 2016-11-15 18:45:36 -05:00
Jae Kwon ea4b60a602 Fix compile bug 2016-11-15 18:37:00 -05:00
Jae Kwon b73a6905a1 Initial pass at bft_fix_2 completion 2016-11-15 18:37:00 -05:00
Jae Kwon 655d829314 Fix proposal sign bytes. Start tracking blockID in POL 2016-11-15 18:35:17 -05:00
Jae Kwon 3c5a2f55c2 Add validator index and address to Vote. 2016-11-15 18:33:16 -05:00
Ethan Buchman 3ff9355e7b change some logs to debug 2016-11-03 20:13:39 -04:00
Jae Kwon 480f44f16c QuitService->BaseService 2016-10-28 12:14:24 -07:00
Ethan Buchman 7d493774c7 log: move some Info to Debug 2016-10-14 20:27:50 -04:00
Ethan Buchman 35d4cca8bb type safe events 2016-10-10 03:10:29 -04:00
Ethan Buchman 1110c5d37d privVal.LastSignBytes and more replay tests 2016-08-14 13:33:03 -04:00
Ethan Buchman 501c4e4bac fixes from review 2016-04-26 22:17:13 -04:00
Ethan Buchman 5e42c96267 crank the part size; prioritize data channel 2016-04-19 20:45:33 -04:00
Jae Kwon f17c4c1d57 s/Validation/Commit/g 2016-04-02 09:10:16 -07:00
Ethan Buchman 06a7bb531b consensus: dont allow peer round states to decrease 2016-03-05 16:41:54 -05:00
Ethan Buchman 50ac66f79b fast sync fixes 2016-02-07 16:56:59 -08:00
Jae Kwon 0f1cf243fd Merge remote-tracking branch 'origin/replay' 2016-01-28 19:53:22 -08:00
Jae Kwon 8a3bba48e3 s/*EventDataRoundState/EventDataRoundState/g 2016-01-28 19:44:44 -08:00
Ethan Buchman 3b06368569 rebase fixes 2016-01-14 20:15:33 -05:00
Ethan Buchman 6aaa5fb0bf consensus: msg saving and replay 2016-01-14 18:58:11 -05:00
Jae Kwon f100404362 Make EventDataRoundState use json:"-" instead of Getter/Setter 2016-01-14 11:07:31 -08:00
Ethan Buchman 0be13d1d27 move alert, events, rpc into own repos 2016-01-12 19:15:10 -05:00
Jae Kwon dcc1caaf68 Make Receive() logging consistent 2015-12-31 14:27:05 -08:00
Jae Kwon d87667a0c2 Conform to go-wire new TypeByte behavior for broadcasts 2015-12-21 15:18:16 -08:00
Jae Kwon 08d7980d80 Conform to go-wire new TypeByte behavior 2015-12-21 14:48:44 -08:00
Ethan Buchman c3a8f202ab consensus: fix negative timeout; log levels 2015-12-15 14:44:58 -05:00
Jae Kwon c95b89e98c Merge remote-tracking branch 'origin/consensus_refactor' into consensus_refactor_jae 2015-12-14 09:33:11 -08:00
Ethan Buchman b9e143d956 Fireable -> EventSwitch; rs in EventDataRoundState; fixes from review 2015-12-14 00:38:19 -05:00
Ethan Buchman 4483971776 conR uses events to trigger newstep & hasvote broadcasts 2015-12-13 19:30:15 -05:00
Jae Kwon 855cb0f906 Merge remote-tracking branch 'origin/develop' into consensus_refactor 2015-12-12 19:34:39 -08:00
Ethan Buchman c3f880e758 fire timeout events in handleTimeout; internalMsgQueue 2015-12-11 11:57:15 -05:00
Jae Kwon 34f6f50a07 Conform to go-merkle SimpleProof.Aunts 2015-12-10 11:09:25 -08:00
Ethan Buchman d9b55101e5 move routines to consensus state. drop locks and other go routines 2015-12-10 11:41:18 -05:00
Jae Kwon dfdd3cf18f Tweak channel for performance test 2015-12-09 13:53:31 -08:00
Jae Kwon ea378c5565 Improve logging 2015-12-09 12:30:42 -08:00
Ethan Buchman 4b6e992a47 timeoutRoutine 2015-12-08 16:00:59 -05:00
Ethan Buchman 2c595284d8 msgQueue and msgProcessor 2015-12-05 23:47:41 -05:00
Jae Kwon d69b5c5ab6 Conform to go-wire 1.0 2015-11-10 13:10:43 -08:00
Jae Kwon c4ed55d801 Refactor to move common libraries out of project 2015-10-22 17:39:06 -07:00
Jae Kwon 5631b1a728 fixes #152 and #153 2015-10-12 15:19:55 -07:00
Ethan Buchman 12566f51af better mempool queueing 2015-09-28 22:58:02 -04:00
Ethan Buchman 632e77c1cf rs.CommitRound 2015-09-15 16:13:39 -04:00
Ethan Buchman 2b8157ce2a addVote takes index 2015-09-15 14:26:42 -04:00
Ethan Buchman 555ecb095d precommit nil if locked and no POL 2015-09-15 14:25:50 -04:00
Jae Kwon 5e015bc669 Probable fix for #140 2015-09-11 21:09:01 -07:00
Jae Kwon 625f23af13 Blockpool better timeouts, download rate observation, quicker switching to consensus; Id -> ID (sorry, this doesn't belong here) 2015-09-11 21:09:00 -07:00