diff --git a/client/grpc_client.go b/client/grpc_client.go index 7d43ae6e5..771302c19 100644 --- a/client/grpc_client.go +++ b/client/grpc_client.go @@ -123,7 +123,7 @@ func (cli *grpcClient) EchoAsync(msg string) *ReqRes { req := types.ToRequestEcho(msg) res, err := cli.client.Echo(context.Background(), req.GetEcho(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_Echo{res}}) } @@ -132,7 +132,7 @@ func (cli *grpcClient) FlushAsync() *ReqRes { req := types.ToRequestFlush() res, err := cli.client.Flush(context.Background(), req.GetFlush(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_Flush{res}}) } @@ -141,7 +141,7 @@ func (cli *grpcClient) InfoAsync() *ReqRes { req := types.ToRequestInfo() res, err := cli.client.Info(context.Background(), req.GetInfo(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_Info{res}}) } @@ -150,7 +150,7 @@ func (cli *grpcClient) SetOptionAsync(key string, value string) *ReqRes { req := types.ToRequestSetOption(key, value) res, err := cli.client.SetOption(context.Background(), req.GetSetOption(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_SetOption{res}}) } @@ -159,7 +159,7 @@ func (cli *grpcClient) AppendTxAsync(tx []byte) *ReqRes { req := types.ToRequestAppendTx(tx) res, err := cli.client.AppendTx(context.Background(), req.GetAppendTx(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_AppendTx{res}}) } @@ -168,7 +168,7 @@ func (cli *grpcClient) CheckTxAsync(tx []byte) *ReqRes { req := types.ToRequestCheckTx(tx) res, err := cli.client.CheckTx(context.Background(), req.GetCheckTx(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_CheckTx{res}}) } @@ -177,7 +177,7 @@ func (cli *grpcClient) QueryAsync(query []byte) *ReqRes { req := types.ToRequestQuery(query) res, err := cli.client.Query(context.Background(), req.GetQuery(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_Query{res}}) } @@ -186,7 +186,7 @@ func (cli *grpcClient) CommitAsync() *ReqRes { req := types.ToRequestCommit() res, err := cli.client.Commit(context.Background(), req.GetCommit(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_Commit{res}}) } @@ -195,7 +195,7 @@ func (cli *grpcClient) InitChainAsync(validators []*types.Validator) *ReqRes { req := types.ToRequestInitChain(validators) res, err := cli.client.InitChain(context.Background(), req.GetInitChain(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_InitChain{res}}) } @@ -204,7 +204,7 @@ func (cli *grpcClient) BeginBlockAsync(height uint64) *ReqRes { req := types.ToRequestBeginBlock(height) res, err := cli.client.BeginBlock(context.Background(), req.GetBeginBlock(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_BeginBlock{res}}) } @@ -213,7 +213,7 @@ func (cli *grpcClient) EndBlockAsync(height uint64) *ReqRes { req := types.ToRequestEndBlock(height) res, err := cli.client.EndBlock(context.Background(), req.GetEndBlock(), grpc.FailFast(true)) if err != nil { - cli.err = err + cli.StopForError(err) } return cli.finishAsyncCall(req, &types.Response{&types.Response_EndBlock{res}}) } @@ -240,21 +240,13 @@ func (cli *grpcClient) finishAsyncCall(req *types.Request, res *types.Response) } func (cli *grpcClient) checkErrGetResult() types.Result { - if cli.err != nil { - cli.StopForError(cli.err) - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + // StopForError should already have been called if error is set + return types.ErrInternalError.SetLog(err.Error()) } return types.Result{} } -func (cli *grpcClient) checkGetErr() error { - if cli.err != nil { - cli.StopForError(cli.err) - return cli.err - } - return nil -} - //---------------------------------------- func (cli *grpcClient) EchoSync(msg string) (res types.Result) { @@ -326,23 +318,17 @@ func (cli *grpcClient) CommitSync() (res types.Result) { func (cli *grpcClient) InitChainSync(validators []*types.Validator) (err error) { cli.InitChainAsync(validators) - if err := cli.checkGetErr(); err != nil { - return err - } - return nil + return cli.Error() } func (cli *grpcClient) BeginBlockSync(height uint64) (err error) { cli.BeginBlockAsync(height) - if err := cli.checkGetErr(); err != nil { - return err - } - return nil + return cli.Error() } func (cli *grpcClient) EndBlockSync(height uint64) (validators []*types.Validator, err error) { reqres := cli.EndBlockAsync(height) - if err := cli.checkGetErr(); err != nil { + if err := cli.Error(); err != nil { return nil, err } return reqres.Response.GetEndBlock().Diffs, nil diff --git a/client/socket_client.go b/client/socket_client.go index 10f780bc2..27e74787c 100644 --- a/client/socket_client.go +++ b/client/socket_client.go @@ -276,8 +276,8 @@ func (cli *socketClient) EndBlockAsync(height uint64) *ReqRes { func (cli *socketClient) EchoSync(msg string) (res types.Result) { reqres := cli.queueRequest(types.ToRequestEcho(msg)) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetEcho() return types.Result{Code: OK, Data: []byte(resp.Message), Log: LOG} @@ -285,18 +285,18 @@ func (cli *socketClient) EchoSync(msg string) (res types.Result) { func (cli *socketClient) FlushSync() error { reqRes := cli.queueRequest(types.ToRequestFlush()) - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } reqRes.Wait() // NOTE: if we don't flush the queue, its possible to get stuck here - return cli.err + return cli.Error() } func (cli *socketClient) InfoSync() (res types.Result) { reqres := cli.queueRequest(types.ToRequestInfo()) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetInfo() return types.Result{Code: OK, Data: []byte(resp.Info), Log: LOG} @@ -305,8 +305,8 @@ func (cli *socketClient) InfoSync() (res types.Result) { func (cli *socketClient) SetOptionSync(key string, value string) (res types.Result) { reqres := cli.queueRequest(types.ToRequestSetOption(key, value)) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetSetOption() return types.Result{Code: OK, Data: nil, Log: resp.Log} @@ -315,8 +315,8 @@ func (cli *socketClient) SetOptionSync(key string, value string) (res types.Resu func (cli *socketClient) AppendTxSync(tx []byte) (res types.Result) { reqres := cli.queueRequest(types.ToRequestAppendTx(tx)) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetAppendTx() return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} @@ -325,8 +325,8 @@ func (cli *socketClient) AppendTxSync(tx []byte) (res types.Result) { func (cli *socketClient) CheckTxSync(tx []byte) (res types.Result) { reqres := cli.queueRequest(types.ToRequestCheckTx(tx)) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetCheckTx() return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} @@ -335,8 +335,8 @@ func (cli *socketClient) CheckTxSync(tx []byte) (res types.Result) { func (cli *socketClient) QuerySync(query []byte) (res types.Result) { reqres := cli.queueRequest(types.ToRequestQuery(query)) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetQuery() return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} @@ -345,8 +345,8 @@ func (cli *socketClient) QuerySync(query []byte) (res types.Result) { func (cli *socketClient) CommitSync() (res types.Result) { reqres := cli.queueRequest(types.ToRequestCommit()) cli.FlushSync() - if cli.err != nil { - return types.ErrInternalError.SetLog(cli.err.Error()) + if err := cli.Error(); err != nil { + return types.ErrInternalError.SetLog(err.Error()) } resp := reqres.Response.GetCommit() return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log} @@ -355,8 +355,8 @@ func (cli *socketClient) CommitSync() (res types.Result) { func (cli *socketClient) InitChainSync(validators []*types.Validator) (err error) { cli.queueRequest(types.ToRequestInitChain(validators)) cli.FlushSync() - if cli.err != nil { - return cli.err + if err := cli.Error(); err != nil { + return err } return nil } @@ -364,8 +364,8 @@ func (cli *socketClient) InitChainSync(validators []*types.Validator) (err error func (cli *socketClient) BeginBlockSync(height uint64) (err error) { cli.queueRequest(types.ToRequestBeginBlock(height)) cli.FlushSync() - if cli.err != nil { - return cli.err + if err := cli.Error(); err != nil { + return err } return nil } @@ -373,8 +373,8 @@ func (cli *socketClient) BeginBlockSync(height uint64) (err error) { func (cli *socketClient) EndBlockSync(height uint64) (validators []*types.Validator, err error) { reqres := cli.queueRequest(types.ToRequestEndBlock(height)) cli.FlushSync() - if cli.err != nil { - return nil, cli.err + if err := cli.Error(); err != nil { + return nil, err } return reqres.Response.GetEndBlock().Diffs, nil }