Browse Source

DeliverTxSync/CheckTxSync/CommitSync now return error as well

pull/1780/head
Anton Kaliaev 7 years ago
parent
commit
f01f2bbf3a
No known key found for this signature in database GPG Key ID: 7B6881D965918214
8 changed files with 66 additions and 36 deletions
  1. +3
    -3
      client/client.go
  2. +10
    -9
      client/grpc_client.go
  3. +6
    -6
      client/local_client.go
  4. +10
    -10
      client/socket_client.go
  5. +12
    -3
      cmd/abci-cli/abci-cli.go
  6. +4
    -2
      example/dummy/dummy_test.go
  7. +12
    -3
      tests/test_app/app.go
  8. +9
    -0
      types/errors.go

+ 3
- 3
client/client.go View File

@ -27,10 +27,10 @@ type Client interface {
EchoSync(msg string) (*types.ResponseEcho, error)
InfoSync(types.RequestInfo) (*types.ResponseInfo, error)
SetOptionSync(key string, value string) (log string, err error)
DeliverTxSync(tx []byte) *types.ResponseDeliverTx
CheckTxSync(tx []byte) *types.ResponseCheckTx
DeliverTxSync(tx []byte) (*types.ResponseDeliverTx, error)
CheckTxSync(tx []byte) (*types.ResponseCheckTx, error)
QuerySync(types.RequestQuery) (*types.ResponseQuery, error)
CommitSync() *types.ResponseCommit
CommitSync() (*types.ResponseCommit, error)
InitChainAsync(types.RequestInitChain) *ReqRes
BeginBlockAsync(types.RequestBeginBlock) *ReqRes


+ 10
- 9
client/grpc_client.go View File

@ -6,6 +6,7 @@ import (
"sync"
"time"
"github.com/pkg/errors"
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
@ -267,20 +268,20 @@ func (cli *grpcClient) SetOptionSync(key string, value string) (log string, err
return reqres.Response.GetSetOption().Log, nil
}
func (cli *grpcClient) DeliverTxSync(tx []byte) *types.ResponseDeliverTx {
func (cli *grpcClient) DeliverTxSync(tx []byte) (*types.ResponseDeliverTx, error) {
reqres := cli.DeliverTxAsync(tx)
if err := cli.Error(); err != nil {
return &types.ResponseDeliverTx{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetDeliverTx()
return reqres.Response.GetDeliverTx(), nil
}
func (cli *grpcClient) CheckTxSync(tx []byte) *types.ResponseCheckTx {
func (cli *grpcClient) CheckTxSync(tx []byte) (*types.ResponseCheckTx, error) {
reqres := cli.CheckTxAsync(tx)
if err := cli.Error(); err != nil {
return &types.ResponseCheckTx{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetCheckTx()
return reqres.Response.GetCheckTx(), nil
}
func (cli *grpcClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery, error) {
@ -288,12 +289,12 @@ func (cli *grpcClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery,
return reqres.Response.GetQuery(), cli.Error()
}
func (cli *grpcClient) CommitSync() *types.ResponseCommit {
func (cli *grpcClient) CommitSync() (*types.ResponseCommit, error) {
reqres := cli.CommitAsync()
if err := cli.Error(); err != nil {
return &types.ResponseCommit{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetCommit()
return reqres.Response.GetCommit(), nil
}
func (cli *grpcClient) InitChainSync(params types.RequestInitChain) error {


+ 6
- 6
client/local_client.go View File

@ -166,18 +166,18 @@ func (app *localClient) SetOptionSync(key string, value string) (log string, err
return log, nil
}
func (app *localClient) DeliverTxSync(tx []byte) *types.ResponseDeliverTx {
func (app *localClient) DeliverTxSync(tx []byte) (*types.ResponseDeliverTx, error) {
app.mtx.Lock()
res := app.Application.DeliverTx(tx)
app.mtx.Unlock()
return &res
return &res, nil
}
func (app *localClient) CheckTxSync(tx []byte) *types.ResponseCheckTx {
func (app *localClient) CheckTxSync(tx []byte) (*types.ResponseCheckTx, error) {
app.mtx.Lock()
res := app.Application.CheckTx(tx)
app.mtx.Unlock()
return &res
return &res, nil
}
func (app *localClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery, error) {
@ -187,11 +187,11 @@ func (app *localClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery,
return &res, nil
}
func (app *localClient) CommitSync() *types.ResponseCommit {
func (app *localClient) CommitSync() (*types.ResponseCommit, error) {
app.mtx.Lock()
res := app.Application.Commit()
app.mtx.Unlock()
return &res
return &res, nil
}
func (app *localClient) InitChainSync(params types.RequestInitChain) error {


+ 10
- 10
client/socket_client.go View File

@ -3,13 +3,13 @@ package abcicli
import (
"bufio"
"container/list"
"errors"
"fmt"
"net"
"reflect"
"sync"
"time"
"github.com/pkg/errors"
"github.com/tendermint/abci/types"
cmn "github.com/tendermint/tmlibs/common"
)
@ -303,22 +303,22 @@ func (cli *socketClient) SetOptionSync(key string, value string) (log string, er
return reqres.Response.GetSetOption().Log, nil
}
func (cli *socketClient) DeliverTxSync(tx []byte) *types.ResponseDeliverTx {
func (cli *socketClient) DeliverTxSync(tx []byte) (*types.ResponseDeliverTx, error) {
reqres := cli.queueRequest(types.ToRequestDeliverTx(tx))
cli.FlushSync()
if err := cli.Error(); err != nil {
return &types.ResponseDeliverTx{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetDeliverTx()
return reqres.Response.GetDeliverTx(), nil
}
func (cli *socketClient) CheckTxSync(tx []byte) *types.ResponseCheckTx {
func (cli *socketClient) CheckTxSync(tx []byte) (*types.ResponseCheckTx, error) {
reqres := cli.queueRequest(types.ToRequestCheckTx(tx))
cli.FlushSync()
if err := cli.Error(); err != nil {
return &types.ResponseCheckTx{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetCheckTx()
return reqres.Response.GetCheckTx(), nil
}
func (cli *socketClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery, error) {
@ -327,13 +327,13 @@ func (cli *socketClient) QuerySync(req types.RequestQuery) (*types.ResponseQuery
return reqres.Response.GetQuery(), cli.Error()
}
func (cli *socketClient) CommitSync() *types.ResponseCommit {
func (cli *socketClient) CommitSync() (*types.ResponseCommit, error) {
reqres := cli.queueRequest(types.ToRequestCommit())
cli.FlushSync()
if err := cli.Error(); err != nil {
return &types.ResponseCommit{Code: types.CodeType_InternalError, Log: err.Error()}
return nil, errors.Wrap(err, types.HumanCode(types.CodeType_InternalError))
}
return reqres.Response.GetCommit()
return reqres.Response.GetCommit(), nil
}
func (cli *socketClient) InitChainSync(params types.RequestInitChain) error {


+ 12
- 3
cmd/abci-cli/abci-cli.go View File

@ -371,7 +371,10 @@ func cmdDeliverTx(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
res := client.DeliverTxSync(txBytes)
res, err := client.DeliverTxSync(txBytes)
if err != nil {
return err
}
printResponse(cmd, args, response{
Code: res.Code,
Data: res.Data,
@ -386,7 +389,10 @@ func cmdCheckTx(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
res := client.CheckTxSync(txBytes)
res, err := client.CheckTxSync(txBytes)
if err != nil {
return err
}
printResponse(cmd, args, response{
Code: res.Code,
Data: res.Data,
@ -397,7 +403,10 @@ func cmdCheckTx(cmd *cobra.Command, args []string) error {
// Get application Merkle root hash
func cmdCommit(cmd *cobra.Command, args []string) error {
res := client.CommitSync()
res, err := client.CommitSync()
if err != nil {
return err
}
printResponse(cmd, args, response{
Code: res.Code,
Data: res.Data,


+ 4
- 2
example/dummy/dummy_test.go View File

@ -281,10 +281,12 @@ func runClientTests(t *testing.T, client abcicli.Client) {
}
func testClient(t *testing.T, app abcicli.Client, tx []byte, key, value string) {
ar := app.DeliverTxSync(tx)
ar, err := app.DeliverTxSync(tx)
require.NoError(t, err)
require.False(t, ar.IsErr(), ar)
// repeating tx doesn't raise error
ar = app.DeliverTxSync(tx)
ar, err = app.DeliverTxSync(tx)
require.NoError(t, err)
require.False(t, ar.IsErr(), ar)
// make sure query is fine


+ 12
- 3
tests/test_app/app.go View File

@ -55,7 +55,10 @@ func setOption(client abcicli.Client, key, value string) {
}
func commit(client abcicli.Client, hashExp []byte) {
res := client.CommitSync()
res, err := client.CommitSync()
if err != nil {
panicf("client error: %v", err)
}
if res.IsErr() {
panicf("committing err %v\n", res)
}
@ -65,7 +68,10 @@ func commit(client abcicli.Client, hashExp []byte) {
}
func deliverTx(client abcicli.Client, txBytes []byte, codeExp types.CodeType, dataExp []byte) {
res := client.DeliverTxSync(txBytes)
res, err := client.DeliverTxSync(txBytes)
if err != nil {
panicf("client error: %v", err)
}
if res.Code != codeExp {
panicf("DeliverTx response code was unexpected. Got %v expected %v. Log: %v", res.Code, codeExp, res.Log)
}
@ -75,7 +81,10 @@ func deliverTx(client abcicli.Client, txBytes []byte, codeExp types.CodeType, da
}
/*func checkTx(client abcicli.Client, txBytes []byte, codeExp types.CodeType, dataExp []byte) {
res := client.CheckTxSync(txBytes)
res, err := client.CheckTxSync(txBytes)
if err != nil {
panicf("client error: %v", err)
}
if res.IsErr() {
panicf("checking tx %X: %v\nlog: %v", txBytes, res.Log)
}


+ 9
- 0
types/errors.go View File

@ -47,3 +47,12 @@ var (
CodeType_BaseUnknownPubKey: "Error (base) unknown pubkey",
}
)
// HumanCode transforms code into a more humane format, such as "Internal error" instead of 0.
func HumanCode(code CodeType) string {
s, ok := code2string[code]
if !ok {
return "Unknown code"
}
return s
}

Loading…
Cancel
Save