Skip to content

Check peer.Send failures#373

Merged
ebuchman merged 2 commits intotendermint:developfrom
melekes:bugfix/174-peer-send-failures-are-not-checked
Feb 21, 2017
Merged

Check peer.Send failures#373
ebuchman merged 2 commits intotendermint:developfrom
melekes:bugfix/174-peer-send-failures-are-not-checked

Conversation

@melekes
Copy link
Contributor

@melekes melekes commented Jan 18, 2017

See #174 for the issue & discussion.

@melekes melekes changed the base branch from master to develop January 18, 2017 07:29
if nrsMsg != nil {
peer.Send(StateChannel, struct{ ConsensusMessage }{nrsMsg})
if !peer.Send(StateChannel, struct{ ConsensusMessage }{nrsMsg}) {
log.Warn("Failed to send NewRoundStepMessage to peer")
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure whenever we should log.Warn every unsuccessful Send

Copy link
Contributor

@ebuchman ebuchman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. But I'd probably rather we revert the Fmt changes.

Also, maybe we can test this on mintnet-k8 to see how chatty the warnings are?

}
if state.LastBlockHeight != store.Height() {
PanicSanity(Fmt("state (%v) and store (%v) height mismatch", state.LastBlockHeight, store.Height()))
cmn.PanicSanity(fmt.Sprintf("state (%v) and store (%v) height mismatch", state.LastBlockHeight, store.Height()))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you think we should stop using cmn.Fmt?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've created this a long time ago)) and changed my mind since then. I do think we should rely on common as little as possible. But here, it is somewhat justified

@melekes
Copy link
Contributor Author

melekes commented Feb 21, 2017

Also, maybe we can test this on mintnet-k8 to see how chatty the warnings are?

good idea!

@melekes melekes force-pushed the bugfix/174-peer-send-failures-are-not-checked branch from 5a25f77 to 09f2948 Compare February 21, 2017 07:31
make lint happy

remove dead code

remove not needed go-common dependency

check peer.Send failures (Refs tendermint#174)
@melekes melekes force-pushed the bugfix/174-peer-send-failures-are-not-checked branch from 09f2948 to 6dbe9fe Compare February 21, 2017 07:57
@melekes
Copy link
Contributor Author

melekes commented Feb 21, 2017

NOTE[02-21|08:34:36] Finalizing commit of block with 0 txs    module=consensus height=100 hash=6DFBECAC45A89F4EA09EF097F1840A0E5BADAC8F root=
WARN[02-21|08:34:36] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:94 R:0 S:RoundStepNewHeight LCR:0]}"
WARN[02-21|08:34:36] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{93/00/2} VI:3]}"
NOTE[02-21|08:34:37] enterNewRound(101/0). Current: 101/0/RoundStepNewHeight module=consensus
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:94 R:0 S:RoundStepPropose LCR:0]}"
NOTE[02-21|08:34:37] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=D48EE834692600C45ED260C5729E8524E975370C
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{94/00/1} VI:1]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{94/00/1} VI:0]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:94 R:0 S:RoundStepPrevote LCR:0]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:94 R:0 S:RoundStepPrecommit LCR:0]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{94/00/1} VI:2]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{94/00/2} VI:0]}"
NOTE[02-21|08:34:37] Finalizing commit of block with 0 txs    module=consensus height=101 hash=D48EE834692600C45ED260C5729E8524E975370C root=
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{94/00/2} VI:1]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{94/00/2} VI:2]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:94 R:0 S:RoundStepCommit LCR:0]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[CommitStep H:94 BP:1:9B17B6E4884E BA:BA{1:X}]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:95 R:0 S:RoundStepNewHeight LCR:0]}"
WARN[02-21|08:34:37] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{94/00/2} VI:3]}"
NOTE[02-21|08:34:38] enterNewRound(102/0). Current: 102/0/RoundStepNewHeight module=consensus
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:95 R:0 S:RoundStepPropose LCR:0]}"
NOTE[02-21|08:34:38] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=682501367A5800DFBFD33947212340626EF37E0A
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{95/00/1} VI:2]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:95 R:0 S:RoundStepPrevote LCR:0]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{95/00/1} VI:0]}"
NOTE[02-21|08:34:38] Finalizing commit of block with 0 txs    module=consensus height=102 hash=682501367A5800DFBFD33947212340626EF37E0A root=
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{95/00/1} VI:1]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:95 R:0 S:RoundStepPrecommit LCR:0]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{95/00/2} VI:0]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{95/00/2} VI:2]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{95/00/2} VI:1]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[CommitStep H:95 BP:1:8F15AD4DC75B BA:BA{1:X}]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:95 R:0 S:RoundStepCommit LCR:0]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:96 R:0 S:RoundStepNewHeight LCR:0]}"
WARN[02-21|08:34:38] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{95/00/2} VI:3]}"
NOTE[02-21|08:34:39] enterNewRound(103/0). Current: 103/0/RoundStepNewHeight module=consensus
WARN[02-21|08:34:39] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:96 R:0 S:RoundStepPropose LCR:0]}"
NOTE[02-21|08:34:39] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=9806D73CE9841F1C39E112B8340226AA79E68F8E
NOTE[02-21|08:34:40] Finalizing commit of block with 0 txs    module=consensus height=103 hash=9806D73CE9841F1C39E112B8340226AA79E68F8E root=
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:96 R:0 S:RoundStepPrevote LCR:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{96/00/1} VI:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{96/00/1} VI:3]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{96/00/1} VI:1]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:96 R:0 S:RoundStepPrecommit LCR:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{96/00/2} VI:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{96/00/1} VI:2]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{96/00/2} VI:2]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[CommitStep H:96 BP:1:82A75832C346 BA:BA{1:X}]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:96 R:0 S:RoundStepCommit LCR:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{96/00/2} VI:1]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[NewRoundStep H:97 R:0 S:RoundStepNewHeight LCR:0]}"
WARN[02-21|08:34:40] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.4:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{96/00/2} VI:3]}"
NOTE[02-21|08:34:41] enterNewRound(104/0). Current: 104/0/RoundStepNewHeight module=consensus
NOTE[02-21|08:34:41] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=99C160BD3016CDC4226199E8311A8595CC95254C

When I block incoming connections for port 46656 (iptables -A INPUT -p tcp --destination-port 46656 -j DROP): a lot of Send failed messages when I block the incoming port on one pod/node, which are coming from

vendor/github.com/tendermint/go-p2p/connection.go
211:            log.Warn("Send failed", "channel", chID, "conn", c, "msg", msg)

When I block outgoing packets to 172.17.0.5:46656 (iptables -A OUTPUT -p tcp -d 172.17.0.5 --dport 46656 -j DROP): again Send failed messages; this time perhaps a smaller amount.

NOTE[02-21|09:06:11] Finalizing commit of block with 0 txs    module=consensus height=1521 hash=00EB0459F408A33F523FE0062F18985C5C44936A root=
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{1514/00/1} VI:1]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{1514/00/1} VI:2]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{1514/00/2} VI:3]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1514 R:0 S:RoundStepPrecommit LCR:0]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{1514/00/1} VI:0]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{1514/00/2} VI:0]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[CommitStep H:1514 BP:1:09A7BFB46962BA:BA{1:X}]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1514 R:0 S:RoundStepCommit LCR:0]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{1514/00/2} VI:1]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{1514/00/2} VI:2]}"
WARN[02-21|09:06:11] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1515 R:0 S:RoundStepNewHeight LCR:0]}"
NOTE[02-21|09:06:12] enterNewRound(1522/0). Current: 1522/0/RoundStepNewHeight module=consensus
NOTE[02-21|09:06:12] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=61EB0AD60F65B6341680455F908F9AEC0BAD2C43
NOTE[02-21|09:06:12] Finalizing commit of block with 0 txs    module=consensus height=1522 hash=61EB0AD60F65B6341680455F908F9AEC0BAD2C43 root=
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1515 R:0 S:RoundStepPropose LCR:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{1515/00/1} VI:2]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{1515/00/1} VI:3]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1515 R:0 S:RoundStepPrevote LCR:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{1515/00/1} VI:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1515 R:0 S:RoundStepPrecommit LCR:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:3 V:{1515/00/2} VI:3]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:2 V:{1515/00/2} VI:2]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:0 V:{1515/00/2} VI:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1515 R:0 S:RoundStepCommit LCR:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[CommitStep H:1515 BP:1:E3DF4446A33ABA:BA{1:X}]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[NewRoundStep H:1516 R:0 S:RoundStepNewHeight LCR:0]}"
WARN[02-21|09:06:12] Send failed                              module=p2p channel=20 conn=MConn{172.17.0.5:46656} msg="{ConsensusMessage:[HasVote VI:1 V:{1515/00/2} VI:1]}"

NOTE for myself: in docker if you want to run iptables, you need to run your docker container in priviledged mode.

@melekes melekes force-pushed the bugfix/174-peer-send-failures-are-not-checked branch from a8c1f59 to 2c724d5 Compare February 21, 2017 09:25
@melekes
Copy link
Contributor Author

melekes commented Feb 21, 2017

That said, we should either stick with go-p2p/connection logging or move to a higher level (ie consensus/reactor checking result of peer.Send and reacting to it). For now, removed duplicated logging from consensus/reactor.

@ebuchman
Copy link
Contributor

ebuchman commented Feb 21, 2017

Ok, will merge PR and leave original issue open about higher level management of failed sends. Tho the checks in here should hopefully help (ie. not calling HasX unless the Send succeeds)

@ebuchman ebuchman merged commit 98a509e into tendermint:develop Feb 21, 2017
@ebuchman ebuchman mentioned this pull request Feb 21, 2017
cmwaters pushed a commit that referenced this pull request Feb 11, 2022
troian pushed a commit to akash-network/tendermint that referenced this pull request Mar 11, 2023
* Docs fixes (tendermint#368)

* fixing broken link quick-start (tendermint#319)

* fix link to point to relative page (tendermint#319)

* fix link to point to rpc page (tendermint#319)

* fix link that works for rpc (tendermint#319)

* adding front matter to trigger hooks (tendermint#319)

* add frontmatter to adr page (tendermint#319)

* make link to configuration page relative (tendermint#319)

* remove irrelevant text (tendermint#319)

* updating relative link and removing irrelevant text (tendermint#319)

* remove front matter from ADR (tendermint#319)

* fixing broken links unders docs/tools (tendermint#319)

* fixing broken links under spec/core (tendermint#319)

* fixing broken links in spec/abci home (tendermint#319)

* fix uparrows rendering and broken links (tendermint#319)

* fixing links, comments on abci methods (tendermint#319)

* fixing links in tutorials (tendermint#319)

* adding a landing page for Apps (tendermint#319)

* renaming qa v0.34 page to show in navigation (tendermint#319)

* rename title of page for navigation (tendermint#319)

* fixing links on abci client server (tendermint#319)

* changes to allow RPC top level navigation on docs site (tendermint#319)

* fixing some more broken references (tendermint#319)

* reverting link change as per review (tendermint#319)

* reverting link change as per review (tendermint#319)

* reverting link in app-dev as per review (tendermint#319)

(cherry picked from commit 28baba3)

# Conflicts:
#	docs/core/rpc.md
#	docs/tools/debugging.md
#	docs/tutorials/go-built-in.md
#	docs/tutorials/go.md
#	spec/abci/README.md
#	spec/abci/abci++_basic_concepts.md
#	spec/abci/abci++_client_server.md
#	spec/abci/abci++_methods.md

* fix conflicts

* fixing rpc content (tendermint#373)

* Update docs/core/rpc.md

Co-authored-by: Daniel <daniel.cason@informal.systems>

* remove the inspect cmd info (tendermint#373)

* remove RPC section tied to inspect cmd (tendermint#373)

* fix rpc link (tendermint#373)

---------

Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: Adi Seredinschi <a@seredinschi.net>
Co-authored-by: Daniel <daniel.cason@informal.systems>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants