diff --git a/api/client/gateway_client.go b/api/client/gateway_client.go index 273fddb..1315362 100644 --- a/api/client/gateway_client.go +++ b/api/client/gateway_client.go @@ -22,18 +22,25 @@ type GatewayAPI struct { } func NewGatewayRPC(cfg *config.GatewayNode) (*GatewayAPI, jsonrpc.ClientCloser, error) { - addr, err := cfg.DialArgs() + var err error + addrs, err := cfg.DialArgs() if err != nil { return nil, nil, xerrors.Errorf("could not get DialArgs: %w", err) } var gatewayAPI = &GatewayAPI{} - closer, err := jsonrpc.NewMergeClient(context.Background(), addr, "Gateway", - []interface{}{ - gatewayAPI, - }, - cfg.AuthHeader(), - ) + var closer jsonrpc.ClientCloser + for _, addr := range addrs { + closer, err = jsonrpc.NewMergeClient(context.Background(), addr, "Gateway", + []interface{}{ + gatewayAPI, + }, + cfg.AuthHeader(), + ) + if err == nil { + return gatewayAPI, closer, err + } + } return gatewayAPI, closer, err } diff --git a/cmd/address.go b/cmd/address.go index ef8b10f..1edbc86 100644 --- a/cmd/address.go +++ b/cmd/address.go @@ -206,7 +206,7 @@ var stateCmd = &cli.Command{ var startMiningCmd = &cli.Command{ Name: "start", - Usage: "start mining for specified miner", + Usage: "start mining for specified miner, if not specified, it means all", Flags: []cli.Flag{}, ArgsUsage: "[address ...]", Action: func(cctx *cli.Context) error { @@ -239,7 +239,7 @@ var startMiningCmd = &cli.Command{ var stopMiningCmd = &cli.Command{ Name: "stop", - Usage: "stop mining for specified miner", + Usage: "stop mining for specified miner, if not specified, it means all", Flags: []cli.Flag{}, ArgsUsage: "[address ...]", Action: func(cctx *cli.Context) error { diff --git a/cmd/init.go b/cmd/init.go index d536a2c..59b345b 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -57,10 +57,9 @@ var initCmd = &cli.Command{ Usage: "auth node token", Value: "", }, - &cli.StringFlag{ + &cli.StringSliceFlag{ Name: "gateway-api", Usage: "gateway api", - Value: "", }, &cli.StringFlag{ Name: "gateway-token", @@ -180,13 +179,13 @@ func storageMinerInit(cctx *cli.Context, r repo.Repo, fn config.FullNode) error cfg := i.(*config.MinerConfig) cfg.FullNode = fn - if cctx.String("gateway-api") != "" { + if cctx.IsSet("gateway-api") { gt := cctx.String("gateway-token") if gt == "" { gt = cctx.String("token") } cfg.Gateway = &config.GatewayNode{ - ListenAPI: cctx.String("gateway-api"), + ListenAPI: cctx.StringSlice("gateway-api"), Token: gt, } } diff --git a/node/config/def.go b/node/config/def.go index e0a1a6f..d5a337c 100644 --- a/node/config/def.go +++ b/node/config/def.go @@ -102,7 +102,7 @@ type TraceConfig struct { func newDefaultTraceConfig() *TraceConfig { return &TraceConfig{ - JaegerTracingEnabled: true, + JaegerTracingEnabled: false, JaegerEndpoint: "localhost:6831", ProbabilitySampler: 1.0, ServerName: "venus-miner", diff --git a/node/config/gatewaydef.go b/node/config/gatewaydef.go index 61cbada..67ca4cf 100644 --- a/node/config/gatewaydef.go +++ b/node/config/gatewaydef.go @@ -10,26 +10,35 @@ import ( ) type GatewayNode struct { - ListenAPI string + ListenAPI []string Token string } -func (gw *GatewayNode) DialArgs() (string, error) { - ma, err := multiaddr.NewMultiaddr(gw.ListenAPI) - if err == nil { - _, addr, err := manet.DialArgs(ma) +func (gw *GatewayNode) DialArgs() ([]string, error) { + var mAddrs []string + + for _, apiAddr := range gw.ListenAPI { + ma, err := multiaddr.NewMultiaddr(apiAddr) + if err == nil { + _, addr, err := manet.DialArgs(ma) + if err != nil { + log.Errorf("dial ma err: %s", err.Error()) + continue + } + + mAddrs = append(mAddrs, "ws://"+addr+"/rpc/v0") + } + + _, err = url.Parse(apiAddr) if err != nil { - return "", err + log.Errorf("parse [%s] err: %s", apiAddr, err.Error()) + continue } - return "ws://" + addr + "/rpc/v0", nil + mAddrs = append(mAddrs, apiAddr+"/rpc/v0") } - _, err = url.Parse(gw.ListenAPI) - if err != nil { - return "", err - } - return gw.ListenAPI + "/rpc/v0", nil + return mAddrs, nil } func (gw *GatewayNode) AuthHeader() http.Header { @@ -44,7 +53,7 @@ func (gw *GatewayNode) AuthHeader() http.Header { func newDefaultGatewayNode() *GatewayNode { return &GatewayNode{ - ListenAPI: "", + ListenAPI: []string{}, Token: "", } }