From d8a1137a9ef6f58d023b6cefbaed2aca2f30ecba Mon Sep 17 00:00:00 2001 From: montaguelhz <1443171175@qq.com> Date: Sun, 12 Nov 2023 12:49:14 +0800 Subject: [PATCH] [fix]tools-v2: panic when show cluster status Signed-off-by: montaguelhz <1443171175@qq.com> --- tools-v2/internal/error/error.go | 18 +++++++++++++++--- .../command/curvefs/status/copyset/copyset.go | 3 +-- .../cli/command/curvefs/status/etcd/etcd.go | 1 + .../pkg/cli/command/curvefs/status/mds/mds.go | 2 ++ .../curvefs/status/metaserver/metaserver.go | 4 +++- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/tools-v2/internal/error/error.go b/tools-v2/internal/error/error.go index bef898d38c..0021db80c6 100644 --- a/tools-v2/internal/error/error.go +++ b/tools-v2/internal/error/error.go @@ -379,15 +379,12 @@ var ( ErrBsListZone = func() *CmdError { return NewInternalCmdError(39, "list zone fail. the error is %s") } - ErrBsDeleteFile = func() *CmdError { return NewInternalCmdError(40, "delete file fail. the error is %s") } - ErrRespTypeNoExpected = func() *CmdError { return NewInternalCmdError(41, "the response type is not as expected, should be: %s") } - ErrGetPeer = func() *CmdError { return NewInternalCmdError(42, "invalid peer args, err: %s") } @@ -487,6 +484,21 @@ var ( ErrBsGetFormatStatus = func() *CmdError { return NewInternalCmdError(75, "get format status fail, err: %s") } + ErrBsGetSegmentInfo = func() *CmdError { + return NewInternalCmdError(76, "get segment info fail, err: %s") + } + ErrBsGetChunkHash = func() *CmdError { + return NewInternalCmdError(77, "get chunk hash fail, err: %s") + } + ErrBsListSnaspshot = func(requestId, code, message string) *CmdError { + return NewInternalCmdError(78, fmt.Sprintf("list snapshot fail, requestId: %s, code: %s, message: %s", requestId, code, message)) + } + ErrBsGetCloneRecover = func() *CmdError { + return NewInternalCmdError(79, "get clone-recover fail, err: %s") + } + ErrInvalidMetaServerAddr = func() *CmdError { + return NewInternalCmdError(80, "invalid metaserver external addr: %s") + } // http error ErrHttpUnreadableResult = func() *CmdError { diff --git a/tools-v2/pkg/cli/command/curvefs/status/copyset/copyset.go b/tools-v2/pkg/cli/command/curvefs/status/copyset/copyset.go index 42c8c51187..29334a3a79 100644 --- a/tools-v2/pkg/cli/command/curvefs/status/copyset/copyset.go +++ b/tools-v2/pkg/cli/command/curvefs/status/copyset/copyset.go @@ -74,11 +74,10 @@ func (cCmd *CopysetCommand) Init(cmd *cobra.Command, args []string) error { poolIdVec = append(poolIdVec, fmt.Sprintf("%d", info.GetPoolId())) } if len(copysetIdVec) == 0 { - var err error cCmd.Error = cmderror.ErrSuccess() cCmd.Result = "No copyset found" cCmd.health = cobrautil.HEALTH_OK - return err + return nil } copysetIds := strings.Join(copysetIdVec, ",") poolIds := strings.Join(poolIdVec, ",") diff --git a/tools-v2/pkg/cli/command/curvefs/status/etcd/etcd.go b/tools-v2/pkg/cli/command/curvefs/status/etcd/etcd.go index ab25299415..8eee09d842 100644 --- a/tools-v2/pkg/cli/command/curvefs/status/etcd/etcd.go +++ b/tools-v2/pkg/cli/command/curvefs/status/etcd/etcd.go @@ -83,6 +83,7 @@ func (eCmd *EtcdCommand) Init(cmd *cobra.Command, args []string) error { // set main addr etcdAddrs, addrErr := config.GetFsEtcdAddrSlice(eCmd.Cmd) if addrErr.TypeCode() != cmderror.CODE_SUCCESS { + eCmd.Error = addrErr return fmt.Errorf(addrErr.Message) } for _, addr := range etcdAddrs { diff --git a/tools-v2/pkg/cli/command/curvefs/status/mds/mds.go b/tools-v2/pkg/cli/command/curvefs/status/mds/mds.go index df7a29651a..b1f5702f11 100644 --- a/tools-v2/pkg/cli/command/curvefs/status/mds/mds.go +++ b/tools-v2/pkg/cli/command/curvefs/status/mds/mds.go @@ -76,12 +76,14 @@ func (mCmd *MdsCommand) Init(cmd *cobra.Command, args []string) error { // set main addr mainAddrs, addrErr := config.GetFsMdsAddrSlice(mCmd.Cmd) if addrErr.TypeCode() != cmderror.CODE_SUCCESS { + mCmd.Error = addrErr return fmt.Errorf(addrErr.Message) } // set dummy addr dummyAddrs, addrErr := config.GetFsMdsDummyAddrSlice(mCmd.Cmd) if addrErr.TypeCode() != cmderror.CODE_SUCCESS { + mCmd.Error = addrErr return fmt.Errorf(addrErr.Message) } for _, addr := range dummyAddrs { diff --git a/tools-v2/pkg/cli/command/curvefs/status/metaserver/metaserver.go b/tools-v2/pkg/cli/command/curvefs/status/metaserver/metaserver.go index 26e264e5fa..f2ab22dce1 100644 --- a/tools-v2/pkg/cli/command/curvefs/status/metaserver/metaserver.go +++ b/tools-v2/pkg/cli/command/curvefs/status/metaserver/metaserver.go @@ -88,7 +88,9 @@ func (mCmd *MetaserverCommand) Init(cmd *cobra.Command, args []string) error { for i, addr := range externalAddrs { if !config.IsValidAddr(addr) { - return fmt.Errorf("invalid metaserver external addr: %s", addr) + mCmd.Error = cmderror.ErrInvalidMetaServerAddr() + mCmd.Error.Format(addr) + return fmt.Errorf(mCmd.Error.Message) } // set metrics