Browse Source

add staticcheck linting (#3828)

cleanup to add linter

    grpc change:
        https://godoc.org/google.golang.org/grpc#WithContextDialer
        https://godoc.org/google.golang.org/grpc#WithDialer
        grpc/grpc-go#2627
    prometheous change:
        due to UninstrumentedHandler, being deprecated in the future
    empty branch = empty if or else statement
        didn't delete them entirely but commented
        couldn't find a reason to have them
    could not replicate the issue #3406
        but if want to keep it commented then we should comment out the if statement as well
pull/3926/head
Marko 5 years ago
committed by Jack Zampolin
parent
commit
ff9e08a32f
26 changed files with 116 additions and 105 deletions
  1. +0
    -1
      .golangci.yml
  2. +16
    -16
      abci/client/grpc_client.go
  3. +2
    -2
      abci/example/example_test.go
  4. +8
    -12
      blockchain/v0/reactor.go
  5. +10
    -8
      blockchain/v1/reactor.go
  6. +8
    -4
      consensus/mempool_test.go
  7. +1
    -1
      consensus/reactor_test.go
  8. +11
    -10
      consensus/state.go
  9. +0
    -6
      consensus/state_test.go
  10. +1
    -0
      go.sum
  11. +6
    -4
      libs/common/async.go
  12. +3
    -2
      libs/common/async_test.go
  13. +2
    -2
      libs/pubsub/pubsub_test.go
  14. +2
    -2
      lite/proxy/query_test.go
  15. +5
    -5
      mempool/clist_mempool.go
  16. +2
    -1
      p2p/conn/connection_test.go
  17. +8
    -4
      p2p/conn/secret_connection_test.go
  18. +2
    -2
      p2p/switch_test.go
  19. +2
    -1
      privval/signer_validator_endpoint_test.go
  20. +3
    -3
      rpc/grpc/client_server.go
  21. +10
    -8
      rpc/lib/client/ws_client.go
  22. +2
    -1
      rpc/lib/client/ws_client_test.go
  23. +2
    -2
      state/state_test.go
  24. +1
    -1
      tools/tm-monitor/mock/eventmeter.go
  25. +1
    -1
      types/genesis_test.go
  26. +8
    -6
      types/validator_set.go

+ 0
- 1
.golangci.yml View File

@ -8,7 +8,6 @@ linters:
- golint - golint
- maligned - maligned
- errcheck - errcheck
- staticcheck
- interfacer - interfacer
- unconvert - unconvert
- goconst - goconst


+ 16
- 16
abci/client/grpc_client.go View File

@ -6,8 +6,8 @@ import (
"sync" "sync"
"time" "time"
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
"golang.org/x/net/context"
"google.golang.org/grpc"
"github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/abci/types"
cmn "github.com/tendermint/tendermint/libs/common" cmn "github.com/tendermint/tendermint/libs/common"
@ -39,7 +39,7 @@ func NewGRPCClient(addr string, mustConnect bool) *grpcClient {
return cli return cli
} }
func dialerFunc(addr string, timeout time.Duration) (net.Conn, error) {
func dialerFunc(ctx context.Context, addr string) (net.Conn, error) {
return cmn.Connect(addr) return cmn.Connect(addr)
} }
@ -49,7 +49,7 @@ func (cli *grpcClient) OnStart() error {
} }
RETRY_LOOP: RETRY_LOOP:
for { for {
conn, err := grpc.Dial(cli.addr, grpc.WithInsecure(), grpc.WithDialer(dialerFunc))
conn, err := grpc.Dial(cli.addr, grpc.WithInsecure(), grpc.WithContextDialer(dialerFunc))
if err != nil { if err != nil {
if cli.mustConnect { if cli.mustConnect {
return err return err
@ -65,7 +65,7 @@ RETRY_LOOP:
ENSURE_CONNECTED: ENSURE_CONNECTED:
for { for {
_, err := client.Echo(context.Background(), &types.RequestEcho{Message: "hello"}, grpc.FailFast(true))
_, err := client.Echo(context.Background(), &types.RequestEcho{Message: "hello"}, grpc.WaitForReady(true))
if err == nil { if err == nil {
break ENSURE_CONNECTED break ENSURE_CONNECTED
} }
@ -125,7 +125,7 @@ func (cli *grpcClient) SetResponseCallback(resCb Callback) {
func (cli *grpcClient) EchoAsync(msg string) *ReqRes { func (cli *grpcClient) EchoAsync(msg string) *ReqRes {
req := types.ToRequestEcho(msg) req := types.ToRequestEcho(msg)
res, err := cli.client.Echo(context.Background(), req.GetEcho(), grpc.FailFast(true))
res, err := cli.client.Echo(context.Background(), req.GetEcho(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -134,7 +134,7 @@ func (cli *grpcClient) EchoAsync(msg string) *ReqRes {
func (cli *grpcClient) FlushAsync() *ReqRes { func (cli *grpcClient) FlushAsync() *ReqRes {
req := types.ToRequestFlush() req := types.ToRequestFlush()
res, err := cli.client.Flush(context.Background(), req.GetFlush(), grpc.FailFast(true))
res, err := cli.client.Flush(context.Background(), req.GetFlush(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -143,7 +143,7 @@ func (cli *grpcClient) FlushAsync() *ReqRes {
func (cli *grpcClient) InfoAsync(params types.RequestInfo) *ReqRes { func (cli *grpcClient) InfoAsync(params types.RequestInfo) *ReqRes {
req := types.ToRequestInfo(params) req := types.ToRequestInfo(params)
res, err := cli.client.Info(context.Background(), req.GetInfo(), grpc.FailFast(true))
res, err := cli.client.Info(context.Background(), req.GetInfo(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -152,7 +152,7 @@ func (cli *grpcClient) InfoAsync(params types.RequestInfo) *ReqRes {
func (cli *grpcClient) SetOptionAsync(params types.RequestSetOption) *ReqRes { func (cli *grpcClient) SetOptionAsync(params types.RequestSetOption) *ReqRes {
req := types.ToRequestSetOption(params) req := types.ToRequestSetOption(params)
res, err := cli.client.SetOption(context.Background(), req.GetSetOption(), grpc.FailFast(true))
res, err := cli.client.SetOption(context.Background(), req.GetSetOption(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -161,7 +161,7 @@ func (cli *grpcClient) SetOptionAsync(params types.RequestSetOption) *ReqRes {
func (cli *grpcClient) DeliverTxAsync(params types.RequestDeliverTx) *ReqRes { func (cli *grpcClient) DeliverTxAsync(params types.RequestDeliverTx) *ReqRes {
req := types.ToRequestDeliverTx(params) req := types.ToRequestDeliverTx(params)
res, err := cli.client.DeliverTx(context.Background(), req.GetDeliverTx(), grpc.FailFast(true))
res, err := cli.client.DeliverTx(context.Background(), req.GetDeliverTx(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -170,7 +170,7 @@ func (cli *grpcClient) DeliverTxAsync(params types.RequestDeliverTx) *ReqRes {
func (cli *grpcClient) CheckTxAsync(params types.RequestCheckTx) *ReqRes { func (cli *grpcClient) CheckTxAsync(params types.RequestCheckTx) *ReqRes {
req := types.ToRequestCheckTx(params) req := types.ToRequestCheckTx(params)
res, err := cli.client.CheckTx(context.Background(), req.GetCheckTx(), grpc.FailFast(true))
res, err := cli.client.CheckTx(context.Background(), req.GetCheckTx(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -179,7 +179,7 @@ func (cli *grpcClient) CheckTxAsync(params types.RequestCheckTx) *ReqRes {
func (cli *grpcClient) QueryAsync(params types.RequestQuery) *ReqRes { func (cli *grpcClient) QueryAsync(params types.RequestQuery) *ReqRes {
req := types.ToRequestQuery(params) req := types.ToRequestQuery(params)
res, err := cli.client.Query(context.Background(), req.GetQuery(), grpc.FailFast(true))
res, err := cli.client.Query(context.Background(), req.GetQuery(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -188,7 +188,7 @@ func (cli *grpcClient) QueryAsync(params types.RequestQuery) *ReqRes {
func (cli *grpcClient) CommitAsync() *ReqRes { func (cli *grpcClient) CommitAsync() *ReqRes {
req := types.ToRequestCommit() req := types.ToRequestCommit()
res, err := cli.client.Commit(context.Background(), req.GetCommit(), grpc.FailFast(true))
res, err := cli.client.Commit(context.Background(), req.GetCommit(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -197,7 +197,7 @@ func (cli *grpcClient) CommitAsync() *ReqRes {
func (cli *grpcClient) InitChainAsync(params types.RequestInitChain) *ReqRes { func (cli *grpcClient) InitChainAsync(params types.RequestInitChain) *ReqRes {
req := types.ToRequestInitChain(params) req := types.ToRequestInitChain(params)
res, err := cli.client.InitChain(context.Background(), req.GetInitChain(), grpc.FailFast(true))
res, err := cli.client.InitChain(context.Background(), req.GetInitChain(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -206,7 +206,7 @@ func (cli *grpcClient) InitChainAsync(params types.RequestInitChain) *ReqRes {
func (cli *grpcClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes { func (cli *grpcClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes {
req := types.ToRequestBeginBlock(params) req := types.ToRequestBeginBlock(params)
res, err := cli.client.BeginBlock(context.Background(), req.GetBeginBlock(), grpc.FailFast(true))
res, err := cli.client.BeginBlock(context.Background(), req.GetBeginBlock(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }
@ -215,7 +215,7 @@ func (cli *grpcClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes {
func (cli *grpcClient) EndBlockAsync(params types.RequestEndBlock) *ReqRes { func (cli *grpcClient) EndBlockAsync(params types.RequestEndBlock) *ReqRes {
req := types.ToRequestEndBlock(params) req := types.ToRequestEndBlock(params)
res, err := cli.client.EndBlock(context.Background(), req.GetEndBlock(), grpc.FailFast(true))
res, err := cli.client.EndBlock(context.Background(), req.GetEndBlock(), grpc.WaitForReady(true))
if err != nil { if err != nil {
cli.StopForError(err) cli.StopForError(err)
} }


+ 2
- 2
abci/example/example_test.go View File

@ -107,7 +107,7 @@ func testStream(t *testing.T, app types.Application) {
//------------------------- //-------------------------
// test grpc // test grpc
func dialerFunc(addr string, timeout time.Duration) (net.Conn, error) {
func dialerFunc(ctx context.Context, addr string) (net.Conn, error) {
return cmn.Connect(addr) return cmn.Connect(addr)
} }
@ -123,7 +123,7 @@ func testGRPCSync(t *testing.T, app *types.GRPCApplication) {
defer server.Stop() defer server.Stop()
// Connect to the socket // Connect to the socket
conn, err := grpc.Dial("unix://test.sock", grpc.WithInsecure(), grpc.WithDialer(dialerFunc))
conn, err := grpc.Dial("unix://test.sock", grpc.WithInsecure(), grpc.WithContextDialer(dialerFunc))
if err != nil { if err != nil {
t.Fatalf("Error dialing GRPC server: %v", err.Error()) t.Fatalf("Error dialing GRPC server: %v", err.Error())
} }


+ 8
- 12
blockchain/v0/reactor.go View File

@ -141,9 +141,9 @@ func (bcR *BlockchainReactor) GetChannels() []*p2p.ChannelDescriptor {
// AddPeer implements Reactor by sending our state to peer. // AddPeer implements Reactor by sending our state to peer.
func (bcR *BlockchainReactor) AddPeer(peer p2p.Peer) { func (bcR *BlockchainReactor) AddPeer(peer p2p.Peer) {
msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()}) msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()})
if !peer.Send(BlockchainChannel, msgBytes) {
// doing nothing, will try later in `poolRoutine`
}
peer.Send(BlockchainChannel, msgBytes)
// it's OK if send fails. will try later in poolRoutine
// peer is added to the pool once we receive the first // peer is added to the pool once we receive the first
// bcStatusResponseMessage from the peer and call pool.SetPeerHeight // bcStatusResponseMessage from the peer and call pool.SetPeerHeight
} }
@ -191,18 +191,13 @@ func (bcR *BlockchainReactor) Receive(chID byte, src p2p.Peer, msgBytes []byte)
switch msg := msg.(type) { switch msg := msg.(type) {
case *bcBlockRequestMessage: case *bcBlockRequestMessage:
if queued := bcR.respondToPeer(msg, src); !queued {
// Unfortunately not queued since the queue is full.
}
bcR.respondToPeer(msg, src)
case *bcBlockResponseMessage: case *bcBlockResponseMessage:
bcR.pool.AddBlock(src.ID(), msg.Block, len(msgBytes)) bcR.pool.AddBlock(src.ID(), msg.Block, len(msgBytes))
case *bcStatusRequestMessage: case *bcStatusRequestMessage:
// Send peer our state. // Send peer our state.
msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()}) msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()})
queued := src.TrySend(BlockchainChannel, msgBytes)
if !queued {
// sorry
}
src.TrySend(BlockchainChannel, msgBytes)
case *bcStatusResponseMessage: case *bcStatusResponseMessage:
// Got a peer status. Unverified. // Got a peer status. Unverified.
bcR.pool.SetPeerHeight(src.ID(), msg.Height) bcR.pool.SetPeerHeight(src.ID(), msg.Height)
@ -274,9 +269,10 @@ FOR_LOOP:
conR, ok := bcR.Switch.Reactor("CONSENSUS").(consensusReactor) conR, ok := bcR.Switch.Reactor("CONSENSUS").(consensusReactor)
if ok { if ok {
conR.SwitchToConsensus(state, blocksSynced) conR.SwitchToConsensus(state, blocksSynced)
} else {
// should only happen during testing
} }
// else {
// should only happen during testing
// }
break FOR_LOOP break FOR_LOOP
} }


+ 10
- 8
blockchain/v1/reactor.go View File

@ -169,9 +169,9 @@ func (bcR *BlockchainReactor) GetChannels() []*p2p.ChannelDescriptor {
// AddPeer implements Reactor by sending our state to peer. // AddPeer implements Reactor by sending our state to peer.
func (bcR *BlockchainReactor) AddPeer(peer p2p.Peer) { func (bcR *BlockchainReactor) AddPeer(peer p2p.Peer) {
msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()}) msgBytes := cdc.MustMarshalBinaryBare(&bcStatusResponseMessage{bcR.store.Height()})
if !peer.Send(BlockchainChannel, msgBytes) {
// doing nothing, will try later in `poolRoutine`
}
peer.Send(BlockchainChannel, msgBytes)
// it's OK if send fails. will try later in poolRoutine
// peer is added to the pool once we receive the first // peer is added to the pool once we receive the first
// bcStatusResponseMessage from the peer and call pool.updatePeer() // bcStatusResponseMessage from the peer and call pool.updatePeer()
} }
@ -381,10 +381,11 @@ ForLoop:
err: msg.data.err, err: msg.data.err,
}, },
}) })
} else {
// For slow peers, or errors due to blocks received from wrong peer
// the FSM had already removed the peers
} }
// else {
// For slow peers, or errors due to blocks received from wrong peer
// the FSM had already removed the peers
// }
default: default:
bcR.Logger.Error("Event from FSM not supported", "type", msg.event) bcR.Logger.Error("Event from FSM not supported", "type", msg.event)
} }
@ -465,9 +466,10 @@ func (bcR *BlockchainReactor) switchToConsensus() {
if ok { if ok {
conR.SwitchToConsensus(bcR.state, bcR.blocksSynced) conR.SwitchToConsensus(bcR.state, bcR.blocksSynced)
bcR.eventsFromFSMCh <- bcFsmMessage{event: syncFinishedEv} bcR.eventsFromFSMCh <- bcFsmMessage{event: syncFinishedEv}
} else {
// Should only happen during testing.
} }
// else {
// Should only happen during testing.
// }
} }
// Implements bcRNotifier // Implements bcRNotifier


+ 8
- 4
consensus/mempool_test.go View File

@ -155,12 +155,14 @@ func TestMempoolRmBadTx(t *testing.T) {
// and the tx should get removed from the pool // and the tx should get removed from the pool
err := assertMempool(cs.txNotifier).CheckTx(txBytes, func(r *abci.Response) { err := assertMempool(cs.txNotifier).CheckTx(txBytes, func(r *abci.Response) {
if r.GetCheckTx().Code != code.CodeTypeBadNonce { if r.GetCheckTx().Code != code.CodeTypeBadNonce {
t.Fatalf("expected checktx to return bad nonce, got %v", r)
t.Errorf("expected checktx to return bad nonce, got %v", r)
return
} }
checkTxRespCh <- struct{}{} checkTxRespCh <- struct{}{}
}) })
if err != nil { if err != nil {
t.Fatalf("Error after CheckTx: %v", err)
t.Errorf("Error after CheckTx: %v", err)
return
} }
// check for the tx // check for the tx
@ -180,7 +182,8 @@ func TestMempoolRmBadTx(t *testing.T) {
case <-checkTxRespCh: case <-checkTxRespCh:
// success // success
case <-ticker: case <-ticker:
t.Fatalf("Timed out waiting for tx to return")
t.Errorf("Timed out waiting for tx to return")
return
} }
// Wait until the tx is removed // Wait until the tx is removed
@ -189,7 +192,8 @@ func TestMempoolRmBadTx(t *testing.T) {
case <-emptyMempoolCh: case <-emptyMempoolCh:
// success // success
case <-ticker: case <-ticker:
t.Fatalf("Timed out waiting for tx to be removed")
t.Errorf("Timed out waiting for tx to be removed")
return
} }
} }


+ 1
- 1
consensus/reactor_test.go View File

@ -235,7 +235,7 @@ func TestReactorCreatesBlockWhenEmptyBlocksFalse(t *testing.T) {
// send a tx // send a tx
if err := assertMempool(css[3].txNotifier).CheckTx([]byte{1, 2, 3}, nil); err != nil { if err := assertMempool(css[3].txNotifier).CheckTx([]byte{1, 2, 3}, nil); err != nil {
//t.Fatal(err)
t.Error(err)
} }
// wait till everyone makes the first new block // wait till everyone makes the first new block


+ 11
- 10
consensus/state.go View File

@ -690,13 +690,13 @@ func (cs *ConsensusState) handleMsg(mi msgInfo) {
cs.statsMsgQueue <- mi cs.statsMsgQueue <- mi
} }
if err == ErrAddingVote {
// TODO: punish peer
// We probably don't want to stop the peer here. The vote does not
// necessarily comes from a malicious peer but can be just broadcasted by
// a typical peer.
// https://github.com/tendermint/tendermint/issues/1281
}
// if err == ErrAddingVote {
// TODO: punish peer
// We probably don't want to stop the peer here. The vote does not
// necessarily comes from a malicious peer but can be just broadcasted by
// a typical peer.
// https://github.com/tendermint/tendermint/issues/1281
// }
// NOTE: the vote is broadcast to peers by the reactor listening // NOTE: the vote is broadcast to peers by the reactor listening
// for vote events // for vote events
@ -709,7 +709,7 @@ func (cs *ConsensusState) handleMsg(mi msgInfo) {
return return
} }
if err != nil {
if err != nil { // nolint:staticcheck
// Causes TestReactorValidatorSetChanges to timeout // Causes TestReactorValidatorSetChanges to timeout
// https://github.com/tendermint/tendermint/issues/3406 // https://github.com/tendermint/tendermint/issues/3406
// cs.Logger.Error("Error with msg", "height", cs.Height, "round", cs.Round, // cs.Logger.Error("Error with msg", "height", cs.Height, "round", cs.Round,
@ -1227,9 +1227,10 @@ func (cs *ConsensusState) enterCommit(height int64, commitRound int) {
cs.ProposalBlockParts = types.NewPartSetFromHeader(blockID.PartsHeader) cs.ProposalBlockParts = types.NewPartSetFromHeader(blockID.PartsHeader)
cs.eventBus.PublishEventValidBlock(cs.RoundStateEvent()) cs.eventBus.PublishEventValidBlock(cs.RoundStateEvent())
cs.evsw.FireEvent(types.EventValidBlock, &cs.RoundState) cs.evsw.FireEvent(types.EventValidBlock, &cs.RoundState)
} else {
// We just need to keep waiting.
} }
// else {
// We just need to keep waiting.
// }
} }
} }


+ 0
- 6
consensus/state_test.go View File

@ -621,8 +621,6 @@ func TestStateLockPOLUnlock(t *testing.T) {
// the proposed block should now be locked and our precommit added // the proposed block should now be locked and our precommit added
validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash) validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash)
rs = cs1.GetRoundState()
// add precommits from the rest // add precommits from the rest
signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2, vs4) signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2, vs4)
signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3) signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3)
@ -1317,8 +1315,6 @@ func TestStartNextHeightCorrectly(t *testing.T) {
// the proposed block should now be locked and our precommit added // the proposed block should now be locked and our precommit added
validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash) validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash)
rs = cs1.GetRoundState()
// add precommits // add precommits
signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2) signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2)
signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3) signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3)
@ -1370,8 +1366,6 @@ func TestResetTimeoutPrecommitUponNewHeight(t *testing.T) {
ensurePrecommit(voteCh, height, round) ensurePrecommit(voteCh, height, round)
validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash) validatePrecommit(t, cs1, round, round, vss[0], theBlockHash, theBlockHash)
rs = cs1.GetRoundState()
// add precommits // add precommits
signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2) signAddVotes(cs1, types.PrecommitType, nil, types.PartSetHeader{}, vs2)
signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3) signAddVotes(cs1, types.PrecommitType, theBlockHash, theBlockParts, vs3)


+ 1
- 0
go.sum View File

@ -84,6 +84,7 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v0.9.1 h1:K47Rk0v/fkEfwfQet2KWhscE0cJzjgCCDBG2KHZoVno= github.com/prometheus/client_golang v0.9.1 h1:K47Rk0v/fkEfwfQet2KWhscE0cJzjgCCDBG2KHZoVno=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 h1:Cto4X6SVMWRPBkJ/3YHn1iDGDGc/Z+sW+AEMKHMVvN4= github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 h1:Cto4X6SVMWRPBkJ/3YHn1iDGDGc/Z+sW+AEMKHMVvN4=


+ 6
- 4
libs/common/async.go View File

@ -61,9 +61,10 @@ func (trs *TaskResultSet) Reap() *TaskResultSet {
TaskResult: result, TaskResult: result,
OK: true, OK: true,
} }
} else {
// We already wrote it.
} }
// else {
// We already wrote it.
// }
default: default:
// Do nothing. // Do nothing.
} }
@ -83,9 +84,10 @@ func (trs *TaskResultSet) Wait() *TaskResultSet {
TaskResult: result, TaskResult: result,
OK: true, OK: true,
} }
} else {
// We already wrote it.
} }
// else {
// We already wrote it.
// }
} }
return trs return trs
} }


+ 3
- 2
libs/common/async_test.go View File

@ -40,9 +40,10 @@ func TestParallel(t *testing.T) {
} else if !assert.Equal(t, -1*i, taskResult.Value.(int)) { } else if !assert.Equal(t, -1*i, taskResult.Value.(int)) {
assert.Fail(t, "Task should have returned %v but got %v", -1*i, taskResult.Value.(int)) assert.Fail(t, "Task should have returned %v but got %v", -1*i, taskResult.Value.(int))
failedTasks++ failedTasks++
} else {
// Good!
} }
// else {
// Good!
// }
} }
assert.Equal(t, failedTasks, 0, "No task should have failed") assert.Equal(t, failedTasks, 0, "No task should have failed")
assert.Nil(t, trs.FirstError(), "There should be no errors") assert.Nil(t, trs.FirstError(), "There should be no errors")


+ 2
- 2
libs/pubsub/pubsub_test.go View File

@ -273,11 +273,11 @@ func TestResubscribe(t *testing.T) {
defer s.Stop() defer s.Stop()
ctx := context.Background() ctx := context.Background()
subscription, err := s.Subscribe(ctx, clientID, query.Empty{})
_, err := s.Subscribe(ctx, clientID, query.Empty{})
require.NoError(t, err) require.NoError(t, err)
err = s.Unsubscribe(ctx, clientID, query.Empty{}) err = s.Unsubscribe(ctx, clientID, query.Empty{})
require.NoError(t, err) require.NoError(t, err)
subscription, err = s.Subscribe(ctx, clientID, query.Empty{})
subscription, err := s.Subscribe(ctx, clientID, query.Empty{})
require.NoError(t, err) require.NoError(t, err)
err = s.Publish(ctx, "Cable") err = s.Publish(ctx, "Cable")


+ 2
- 2
lite/proxy/query_test.go View File

@ -143,13 +143,13 @@ func TestTxProofs(t *testing.T) {
// First let's make sure a bogus transaction hash returns a valid non-existence proof. // First let's make sure a bogus transaction hash returns a valid non-existence proof.
key := types.Tx([]byte("bogus")).Hash() key := types.Tx([]byte("bogus")).Hash()
res, err := cl.Tx(key, true)
_, err = cl.Tx(key, true)
require.NotNil(err) require.NotNil(err)
require.Contains(err.Error(), "not found") require.Contains(err.Error(), "not found")
// Now let's check with the real tx root hash. // Now let's check with the real tx root hash.
key = types.Tx(tx).Hash() key = types.Tx(tx).Hash()
res, err = cl.Tx(key, true)
res, err := cl.Tx(key, true)
require.NoError(err, "%#v", err) require.NoError(err, "%#v", err)
require.NotNil(res) require.NotNil(res)
keyHash := merkle.SimpleHashFromByteSlices([][]byte{key}) keyHash := merkle.SimpleHashFromByteSlices([][]byte{key})


+ 5
- 5
mempool/clist_mempool.go View File

@ -250,11 +250,11 @@ func (mem *CListMempool) CheckTxWithInfo(tx types.Tx, cb func(*abci.Response), t
// so we only record the sender for txs still in the mempool. // so we only record the sender for txs still in the mempool.
if e, ok := mem.txsMap.Load(txKey(tx)); ok { if e, ok := mem.txsMap.Load(txKey(tx)); ok {
memTx := e.(*clist.CElement).Value.(*mempoolTx) memTx := e.(*clist.CElement).Value.(*mempoolTx)
if _, loaded := memTx.senders.LoadOrStore(txInfo.SenderID, true); loaded {
// TODO: consider punishing peer for dups,
// its non-trivial since invalid txs can become valid,
// but they can spam the same tx with little cost to them atm.
}
memTx.senders.LoadOrStore(txInfo.SenderID, true)
// TODO: consider punishing peer for dups,
// its non-trivial since invalid txs can become valid,
// but they can spam the same tx with little cost to them atm.
} }
return ErrTxInCache return ErrTxInCache


+ 2
- 1
p2p/conn/connection_test.go View File

@ -57,7 +57,8 @@ func TestMConnectionSendFlushStop(t *testing.T) {
msgB := make([]byte, aminoMsgLength) msgB := make([]byte, aminoMsgLength)
_, err := server.Read(msgB) _, err := server.Read(msgB)
if err != nil { if err != nil {
t.Fatal(err)
t.Error(err)
return
} }
errCh <- err errCh <- err
}() }()


+ 8
- 4
p2p/conn/secret_connection_test.go View File

@ -192,7 +192,8 @@ func writeLots(t *testing.T, wg *sync.WaitGroup, conn net.Conn, txt string, n in
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
_, err := conn.Write([]byte(txt)) _, err := conn.Write([]byte(txt))
if err != nil { if err != nil {
t.Fatalf("Failed to write to fooSecConn: %v", err)
t.Errorf("Failed to write to fooSecConn: %v", err)
return
} }
} }
} }
@ -408,7 +409,8 @@ func BenchmarkWriteSecretConnection(b *testing.B) {
if err == io.EOF { if err == io.EOF {
return return
} else if err != nil { } else if err != nil {
b.Fatalf("Failed to read from barSecConn: %v", err)
b.Errorf("Failed to read from barSecConn: %v", err)
return
} }
} }
}() }()
@ -418,7 +420,8 @@ func BenchmarkWriteSecretConnection(b *testing.B) {
idx := cmn.RandIntn(len(fooWriteBytes)) idx := cmn.RandIntn(len(fooWriteBytes))
_, err := fooSecConn.Write(fooWriteBytes[idx]) _, err := fooSecConn.Write(fooWriteBytes[idx])
if err != nil { if err != nil {
b.Fatalf("Failed to write to fooSecConn: %v", err)
b.Errorf("Failed to write to fooSecConn: %v", err)
return
} }
} }
b.StopTimer() b.StopTimer()
@ -451,7 +454,8 @@ func BenchmarkReadSecretConnection(b *testing.B) {
idx := cmn.RandIntn(len(fooWriteBytes)) idx := cmn.RandIntn(len(fooWriteBytes))
_, err := fooSecConn.Write(fooWriteBytes[idx]) _, err := fooSecConn.Write(fooWriteBytes[idx])
if err != nil { if err != nil {
b.Fatalf("Failed to write to fooSecConn: %v, %v,%v", err, i, b.N)
b.Errorf("Failed to write to fooSecConn: %v, %v,%v", err, i, b.N)
return
} }
} }
}() }()


+ 2
- 2
p2p/switch_test.go View File

@ -16,7 +16,7 @@ import (
"testing" "testing"
"time" "time"
stdprometheus "github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -348,7 +348,7 @@ func TestSwitchStopsNonPersistentPeerOnError(t *testing.T) {
} }
func TestSwitchStopPeerForError(t *testing.T) { func TestSwitchStopPeerForError(t *testing.T) {
s := httptest.NewServer(stdprometheus.UninstrumentedHandler())
s := httptest.NewServer(promhttp.Handler())
defer s.Close() defer s.Close()
scrapeMetrics := func() string { scrapeMetrics := func() string {


+ 2
- 1
privval/signer_validator_endpoint_test.go View File

@ -331,9 +331,10 @@ func TestErrUnexpectedResponse(t *testing.T) {
// we do not want to Start() the remote signer here and instead use the connection to // we do not want to Start() the remote signer here and instead use the connection to
// reply with intentionally wrong replies below: // reply with intentionally wrong replies below:
rsConn, err := serviceEndpoint.connect() rsConn, err := serviceEndpoint.connect()
defer rsConn.Close()
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, rsConn) require.NotNil(t, rsConn)
defer rsConn.Close()
// send over public key to get the remote signer running: // send over public key to get the remote signer running:
go testReadWriteResponse(t, &PubKeyResponse{}, rsConn) go testReadWriteResponse(t, &PubKeyResponse{}, rsConn)
<-readyCh <-readyCh


+ 3
- 3
rpc/grpc/client_server.go View File

@ -2,8 +2,8 @@ package core_grpc
import ( import (
"net" "net"
"time"
"golang.org/x/net/context"
"google.golang.org/grpc" "google.golang.org/grpc"
cmn "github.com/tendermint/tendermint/libs/common" cmn "github.com/tendermint/tendermint/libs/common"
@ -26,13 +26,13 @@ func StartGRPCServer(ln net.Listener) error {
// StartGRPCClient dials the gRPC server using protoAddr and returns a new // StartGRPCClient dials the gRPC server using protoAddr and returns a new
// BroadcastAPIClient. // BroadcastAPIClient.
func StartGRPCClient(protoAddr string) BroadcastAPIClient { func StartGRPCClient(protoAddr string) BroadcastAPIClient {
conn, err := grpc.Dial(protoAddr, grpc.WithInsecure(), grpc.WithDialer(dialerFunc))
conn, err := grpc.Dial(protoAddr, grpc.WithInsecure(), grpc.WithContextDialer(dialerFunc))
if err != nil { if err != nil {
panic(err) panic(err)
} }
return NewBroadcastAPIClient(conn) return NewBroadcastAPIClient(conn)
} }
func dialerFunc(addr string, timeout time.Duration) (net.Conn, error) {
func dialerFunc(ctx context.Context, addr string) (net.Conn, error) {
return cmn.Connect(addr) return cmn.Connect(addr)
} }

+ 10
- 8
rpc/lib/client/ws_client.go View File

@ -369,10 +369,11 @@ func (c *WSClient) writeRoutine() {
defer func() { defer func() {
ticker.Stop() ticker.Stop()
if err := c.conn.Close(); err != nil {
// ignore error; it will trigger in tests
// likely because it's closing an already closed connection
}
c.conn.Close()
// err != nil {
// ignore error; it will trigger in tests
// likely because it's closing an already closed connection
// }
c.wg.Done() c.wg.Done()
}() }()
@ -421,10 +422,11 @@ func (c *WSClient) writeRoutine() {
// executing all reads from this goroutine. // executing all reads from this goroutine.
func (c *WSClient) readRoutine() { func (c *WSClient) readRoutine() {
defer func() { defer func() {
if err := c.conn.Close(); err != nil {
// ignore error; it will trigger in tests
// likely because it's closing an already closed connection
}
c.conn.Close()
// err != nil {
// ignore error; it will trigger in tests
// likely because it's closing an already closed connection
// }
c.wg.Done() c.wg.Done()
}() }()


+ 2
- 1
rpc/lib/client/ws_client_test.go View File

@ -212,7 +212,8 @@ func callWgDoneOnResult(t *testing.T, c *WSClient, wg *sync.WaitGroup) {
select { select {
case resp := <-c.ResponsesCh: case resp := <-c.ResponsesCh:
if resp.Error != nil { if resp.Error != nil {
t.Fatalf("unexpected error: %v", resp.Error)
t.Errorf("unexpected error: %v", resp.Error)
return
} }
if resp.Result != nil { if resp.Result != nil {
wg.Done() wg.Done()


+ 2
- 2
state/state_test.go View File

@ -185,11 +185,11 @@ func TestValidatorSimpleSaveLoad(t *testing.T) {
assert := assert.New(t) assert := assert.New(t)
// Can't load anything for height 0. // Can't load anything for height 0.
v, err := sm.LoadValidators(stateDB, 0)
_, err := sm.LoadValidators(stateDB, 0)
assert.IsType(sm.ErrNoValSetForHeight{}, err, "expected err at height 0") assert.IsType(sm.ErrNoValSetForHeight{}, err, "expected err at height 0")
// Should be able to load for height 1. // Should be able to load for height 1.
v, err = sm.LoadValidators(stateDB, 1)
v, err := sm.LoadValidators(stateDB, 1)
assert.Nil(err, "expected no err at height 1") assert.Nil(err, "expected no err at height 1")
assert.Equal(v.Hash(), state.Validators.Hash(), "expected validator hashes to match") assert.Equal(v.Hash(), state.Validators.Hash(), "expected validator hashes to match")


+ 1
- 1
tools/tm-monitor/mock/eventmeter.go View File

@ -54,7 +54,7 @@ func (c *RpcClient) Call(method string, params map[string]interface{}, result in
} }
rv, rt := reflect.ValueOf(result), reflect.TypeOf(result) rv, rt := reflect.ValueOf(result), reflect.TypeOf(result)
rv, rt = rv.Elem(), rt.Elem()
rv, _ = rv.Elem(), rt.Elem()
rv.Set(reflect.ValueOf(s)) rv.Set(reflect.ValueOf(s))
return s, nil return s, nil


+ 1
- 1
types/genesis_test.go View File

@ -68,7 +68,7 @@ func TestGenesisGood(t *testing.T) {
genDoc.ConsensusParams.Block.MaxBytes = 0 genDoc.ConsensusParams.Block.MaxBytes = 0
genDocBytes, err = cdc.MarshalJSON(genDoc) genDocBytes, err = cdc.MarshalJSON(genDoc)
assert.NoError(t, err, "error marshalling genDoc") assert.NoError(t, err, "error marshalling genDoc")
genDoc, err = GenesisDocFromJSON(genDocBytes)
_, err = GenesisDocFromJSON(genDocBytes)
assert.Error(t, err, "expected error for genDoc json with block size of 0") assert.Error(t, err, "expected error for genDoc json with block size of 0")
// Genesis doc from raw json // Genesis doc from raw json


+ 8
- 6
types/validator_set.go View File

@ -619,10 +619,11 @@ func (vals *ValidatorSet) VerifyCommit(chainID string, blockID BlockID, height i
// Good precommit! // Good precommit!
if blockID.Equals(precommit.BlockID) { if blockID.Equals(precommit.BlockID) {
talliedVotingPower += val.VotingPower talliedVotingPower += val.VotingPower
} else {
// It's OK that the BlockID doesn't match. We include stray
// precommits to measure validator availability.
} }
// else {
// It's OK that the BlockID doesn't match. We include stray
// precommits to measure validator availability.
// }
} }
if talliedVotingPower > vals.TotalVotingPower()*2/3 { if talliedVotingPower > vals.TotalVotingPower()*2/3 {
@ -703,10 +704,11 @@ func (vals *ValidatorSet) VerifyFutureCommit(newSet *ValidatorSet, chainID strin
// Good precommit! // Good precommit!
if blockID.Equals(precommit.BlockID) { if blockID.Equals(precommit.BlockID) {
oldVotingPower += val.VotingPower oldVotingPower += val.VotingPower
} else {
// It's OK that the BlockID doesn't match. We include stray
// precommits to measure validator availability.
} }
// else {
// It's OK that the BlockID doesn't match. We include stray
// precommits to measure validator availability.
// }
} }
if oldVotingPower <= oldVals.TotalVotingPower()*2/3 { if oldVotingPower <= oldVals.TotalVotingPower()*2/3 {


Loading…
Cancel
Save