Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix:httpcode #1252

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix:httpcode
constwz committed Nov 27, 2023
commit affc64a083c5b83a422783b9ea5e5ddb8d02c414
12 changes: 6 additions & 6 deletions base/gfspclient/approver.go
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ func (s *GfSpClient) AskCreateBucketApproval(ctx context.Context, task coretask.
conn, connErr := s.ApproverConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect approver", "error", connErr)
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: " + connErr.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: ", connErr)
}
req := &gfspserver.GfSpAskApprovalRequest{
Request: &gfspserver.GfSpAskApprovalRequest_CreateBucketApprovalTask{
@@ -23,7 +23,7 @@ func (s *GfSpClient) AskCreateBucketApproval(ctx context.Context, task coretask.
resp, err := gfspserver.NewGfSpApprovalServiceClient(conn).GfSpAskApproval(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to ask create bucket approval", "error", err)
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create bucket approval, error: " + err.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create bucket approval, error: ", err)
}
if resp.GetErr() != nil {
return false, nil, resp.GetErr()
@@ -42,7 +42,7 @@ func (s *GfSpClient) AskMigrateBucketApproval(ctx context.Context, task coretask
conn, connErr := s.ApproverConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect approver", "error", connErr)
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: " + connErr.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: ", connErr)
}
req := &gfspserver.GfSpAskApprovalRequest{
Request: &gfspserver.GfSpAskApprovalRequest_MigrateBucketApprovalTask{
@@ -51,7 +51,7 @@ func (s *GfSpClient) AskMigrateBucketApproval(ctx context.Context, task coretask
resp, err := gfspserver.NewGfSpApprovalServiceClient(conn).GfSpAskApproval(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to ask create bucket approval", "error", err)
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create bucket approval, error: " + err.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create bucket approval, error: ", err)
}
if resp.GetErr() != nil {
return false, nil, resp.GetErr()
@@ -70,7 +70,7 @@ func (s *GfSpClient) AskCreateObjectApproval(ctx context.Context, task coretask.
conn, connErr := s.ApproverConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect approver", "error", connErr)
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: " + connErr.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to connect approver, error: ", connErr)
}
req := &gfspserver.GfSpAskApprovalRequest{
Request: &gfspserver.GfSpAskApprovalRequest_CreateObjectApprovalTask{
@@ -79,7 +79,7 @@ func (s *GfSpClient) AskCreateObjectApproval(ctx context.Context, task coretask.
resp, err := gfspserver.NewGfSpApprovalServiceClient(conn).GfSpAskApproval(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to ask create object approval", "error", err)
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create object approval, error: " + err.Error())
return false, nil, ErrRPCUnknownWithDetail("client failed to ask create object approval, error: ", err)
}
if resp.GetErr() != nil {
return false, nil, resp.GetErr()
10 changes: 5 additions & 5 deletions base/gfspclient/authenticator.go
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ func (s *GfSpClient) VerifyAuthentication(ctx context.Context, auth coremodule.A
metrics.PerfAuthTimeHistogram.WithLabelValues("auth_client_create_conn_time").Observe(time.Since(startTime).Seconds())
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect authenticator", "error", connErr)
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error:" + connErr.Error())
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error:", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpAuthenticationRequest{
@@ -36,7 +36,7 @@ func (s *GfSpClient) VerifyAuthentication(ctx context.Context, auth coremodule.A
metrics.PerfAuthTimeHistogram.WithLabelValues("auth_client_network_time").Observe(time.Since(startRequestTime).Seconds())
if err != nil {
log.CtxErrorw(ctx, "client failed to verify authentication", "error", err)
return false, ErrRPCUnknownWithDetail("client failed to verify authentication, error: " + err.Error())
return false, ErrRPCUnknownWithDetail("client failed to verify authentication, error: ", err)
}
if resp.GetErr() != nil {
return false, resp.GetErr()
@@ -50,7 +50,7 @@ func (s *GfSpClient) GetAuthNonce(ctx context.Context, account string, domain st
conn, connErr := s.Connection(ctx, s.authenticatorEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect authenticator", "error", connErr)
return 0, 0, "", 0, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: " + connErr.Error())
return 0, 0, "", 0, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GetAuthNonceRequest{
@@ -75,7 +75,7 @@ func (s *GfSpClient) UpdateUserPublicKey(ctx context.Context, account string, do
conn, connErr := s.Connection(ctx, s.authenticatorEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect authenticator", "error", connErr)
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: " + connErr.Error())
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.UpdateUserPublicKeyRequest{
@@ -104,7 +104,7 @@ func (s *GfSpClient) VerifyGNFD1EddsaSignature(ctx context.Context, account stri
conn, connErr := s.Connection(ctx, s.authenticatorEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect authenticator", "error", connErr)
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: " + connErr.Error())
return false, ErrRPCUnknownWithDetail("client failed to connect authenticator, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.VerifyGNFD1EddsaSignatureRequest{
15 changes: 9 additions & 6 deletions base/gfspclient/client.go
Original file line number Diff line number Diff line change
@@ -35,8 +35,11 @@ var (
ErrNoSuchObject = gfsperrors.Register(ClientCodeSpace, http.StatusBadRequest, 98093, "no such object from metadata")
)

func ErrRPCUnknownWithDetail(detail string) *gfsperrors.GfSpError {
return gfsperrors.Register(ClientCodeSpace, http.StatusInternalServerError, 98001, detail)
func ErrRPCUnknownWithDetail(detail string, err error) *gfsperrors.GfSpError {
if gfspErr := gfsperrors.GetGfSpErr(err); gfspErr != nil {
return gfspErr
}
return gfsperrors.Register(ClientCodeSpace, http.StatusInternalServerError, 98001, detail+err.Error())
}

type GfSpClient struct {
@@ -94,7 +97,7 @@ func (s *GfSpClient) ApproverConn(ctx context.Context, opts ...grpc.DialOption)
conn, err := s.Connection(ctx, s.approverEndpoint, options...)
if err != nil {
log.CtxErrorw(ctx, "failed to create connection", "error", err)
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: ", err)
}
s.approverConn = conn
}
@@ -112,7 +115,7 @@ func (s *GfSpClient) ManagerConn(ctx context.Context, opts ...grpc.DialOption) (
conn, err := s.Connection(ctx, s.managerEndpoint, options...)
if err != nil {
log.CtxErrorw(ctx, "failed to create connection", "error", err)
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: ", err)
}
s.managerConn = conn
}
@@ -130,7 +133,7 @@ func (s *GfSpClient) P2PConn(ctx context.Context, opts ...grpc.DialOption) (*grp
conn, err := s.Connection(ctx, s.p2pEndpoint, options...)
if err != nil {
log.CtxErrorw(ctx, "failed to create connection", "error", err)
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: ", err)
}
s.p2pConn = conn
}
@@ -148,7 +151,7 @@ func (s *GfSpClient) SignerConn(ctx context.Context, opts ...grpc.DialOption) (*
conn, err := s.Connection(ctx, s.signerEndpoint, options...)
if err != nil {
log.CtxErrorw(ctx, "failed to create connection", "error", err)
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("failed to create connection, error: ", err)
}
s.signerConn = conn
}
20 changes: 10 additions & 10 deletions base/gfspclient/downloader.go
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ func (s *GfSpClient) GetObject(ctx context.Context, downloadObjectTask coretask.
conn, connErr := s.Connection(ctx, s.downloaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect downloader", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpDownloadObjectRequest{
@@ -27,7 +27,7 @@ func (s *GfSpClient) GetObject(ctx context.Context, downloadObjectTask coretask.
resp, err := gfspserver.NewGfSpDownloadServiceClient(conn).GfSpDownloadObject(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to download object", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to download object, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to download object, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
@@ -40,7 +40,7 @@ func (s *GfSpClient) GetPiece(ctx context.Context, downloadPieceTask coretask.Do
conn, connErr := s.Connection(ctx, s.downloaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect downloader", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpDownloadPieceRequest{
@@ -49,7 +49,7 @@ func (s *GfSpClient) GetPiece(ctx context.Context, downloadPieceTask coretask.Do
resp, err := gfspserver.NewGfSpDownloadServiceClient(conn).GfSpDownloadPiece(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to download piece", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to download piece, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to download piece, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
@@ -61,7 +61,7 @@ func (s *GfSpClient) RecoupQuota(ctx context.Context, bucketID, extraQuota uint6
conn, connErr := s.Connection(ctx, s.downloaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect downloader", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect downloader, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect downloader, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpReimburseQuotaRequest{
@@ -73,7 +73,7 @@ func (s *GfSpClient) RecoupQuota(ctx context.Context, bucketID, extraQuota uint6
resp, err := gfspserver.NewGfSpDownloadServiceClient(conn).GfSpReimburseQuota(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to recoup the extra quota", "error", err)
return ErrRPCUnknownWithDetail("client failed to recoup extra quota, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to recoup extra quota, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -85,7 +85,7 @@ func (s *GfSpClient) DeductQuotaForBucketMigrate(ctx context.Context, bucketID,
conn, connErr := s.Connection(ctx, s.downloaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect downloader", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect downloader, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect downloader, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpDeductQuotaForBucketMigrateRequest{
@@ -97,7 +97,7 @@ func (s *GfSpClient) DeductQuotaForBucketMigrate(ctx context.Context, bucketID,
resp, err := gfspserver.NewGfSpDownloadServiceClient(conn).GfSpDeductQuotaForBucketMigrate(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to deduct the quota for bucket migrate", "request", req, "error", err)
return ErrRPCUnknownWithDetail("client failed to deduct the quota for bucket migrate, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to deduct the quota for bucket migrate, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -110,7 +110,7 @@ func (s *GfSpClient) GetChallengeInfo(ctx context.Context, challengePieceTask co
conn, connErr := s.Connection(ctx, s.downloaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect downloader", "error", connErr)
return nil, nil, nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: " + connErr.Error())
return nil, nil, nil, ErrRPCUnknownWithDetail("client failed to connect downloader, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpGetChallengeInfoRequest{
@@ -121,7 +121,7 @@ func (s *GfSpClient) GetChallengeInfo(ctx context.Context, challengePieceTask co
metrics.PerfChallengeTimeHistogram.WithLabelValues("challenge_client_total_time").Observe(time.Since(startTime).Seconds())
if err != nil {
log.CtxErrorw(ctx, "client failed to get challenge piece info", "error", err)
return nil, nil, nil, ErrRPCUnknownWithDetail("client failed to get challenge piece info, error: " + err.Error())
return nil, nil, nil, ErrRPCUnknownWithDetail("client failed to get challenge piece info, error: ", err)
}
if resp.GetErr() != nil {
return nil, nil, nil, resp.GetErr()
40 changes: 20 additions & 20 deletions base/gfspclient/manager.go
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ func (s *GfSpClient) CreateUploadObject(ctx context.Context, task coretask.Uploa
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpBeginTaskRequest{
Request: &gfspserver.GfSpBeginTaskRequest_UploadObjectTask{
@@ -26,7 +26,7 @@ func (s *GfSpClient) CreateUploadObject(ctx context.Context, task coretask.Uploa
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpBeginTask(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to create upload object task", "error", err)
return ErrRPCUnknownWithDetail("client failed to create upload object task, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to create upload object task, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -38,7 +38,7 @@ func (s *GfSpClient) CreateResumableUploadObject(ctx context.Context, task coret
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpBeginTaskRequest{
Request: &gfspserver.GfSpBeginTaskRequest_ResumableUploadObjectTask{
@@ -48,7 +48,7 @@ func (s *GfSpClient) CreateResumableUploadObject(ctx context.Context, task coret
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpBeginTask(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to create resummable upload object task", "error", err)
return ErrRPCUnknownWithDetail("client failed to create resummable upload object task, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to create resummable upload object task, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -60,15 +60,15 @@ func (s *GfSpClient) AskTask(ctx context.Context, limit corercmgr.Limit) (coreta
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpAskTaskRequest{
NodeLimit: limit.(*gfsplimit.GfSpLimit),
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpAskTask(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to ask task", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to ask task, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to ask task, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
@@ -99,7 +99,7 @@ func (s *GfSpClient) ReportTask(ctx context.Context, report coretask.Task) error
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpReportTaskRequest{}
switch t := report.(type) {
@@ -134,7 +134,7 @@ func (s *GfSpClient) ReportTask(ctx context.Context, report coretask.Task) error
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpReportTask(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to report task", "error", err)
return ErrRPCUnknownWithDetail("client failed to report task, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to report task, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -146,15 +146,15 @@ func (s *GfSpClient) PickVirtualGroupFamilyID(ctx context.Context, task coretask
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return 0, ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return 0, ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpPickVirtualGroupFamilyRequest{
CreateBucketApprovalTask: task.(*gfsptask.GfSpCreateBucketApprovalTask),
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpPickVirtualGroupFamily(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to pick virtual group family id", "error", err)
return 0, ErrRPCUnknownWithDetail("client failed to pick virtual group family id, error: " + err.Error())
return 0, ErrRPCUnknownWithDetail("client failed to pick virtual group family id, error: ", err)
}
if resp.GetErr() != nil {
return 0, resp.GetErr()
@@ -166,15 +166,15 @@ func (s *GfSpClient) NotifyMigrateSwapOut(ctx context.Context, swapOut *virtualg
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpNotifyMigrateSwapOutRequest{
SwapOut: swapOut,
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpNotifyMigrateSwapOut(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to notify migrate swap out", "request", req, "error", err)
return ErrRPCUnknownWithDetail("client failed to notify migrate swap out, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to notify migrate swap out, error: ", err)
}
if resp.GetErr() != nil {
log.CtxErrorw(ctx, "failed to notify migrate swap out", "request", req, "error", resp.GetErr())
@@ -187,12 +187,12 @@ func (s *GfSpClient) GetTasksStats(ctx context.Context) (*gfspserver.TasksStats,
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpQueryTasksStats(ctx, &gfspserver.GfSpQueryTasksStatsRequest{})
if err != nil {
log.CtxErrorw(ctx, "client failed to query manager's task stats", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to query manager's task stats, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to query manager's task stats, error: ", err)
}
return resp.GetStats(), nil
}
@@ -201,15 +201,15 @@ func (s *GfSpClient) NotifyPreMigrateBucket(ctx context.Context, bucketID uint64
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpNotifyPreMigrateBucketRequest{
BucketId: bucketID,
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpNotifyPreMigrate(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to notify pre migrate bucket", "request", req, "error", err)
return ErrRPCUnknownWithDetail("client failed to notify pre migrate bucket, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to notify pre migrate bucket, error: ", err)
}
if resp.GetErr() != nil {
log.CtxErrorw(ctx, "failed to notify pre migrate bucket", "request", req, "error", resp.GetErr())
@@ -222,15 +222,15 @@ func (s *GfSpClient) NotifyPostMigrateBucket(ctx context.Context, bucketID uint6
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
req := &gfspserver.GfSpNotifyPostMigrateBucketRequest{
BucketId: bucketID,
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpNotifyPostMigrate(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to notify post migrate bucket", "request", req, "error", err)
return ErrRPCUnknownWithDetail("client failed to notify post migrate bucket, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to notify post migrate bucket, error: ", err)
}
if resp.GetErr() != nil {
log.CtxErrorw(ctx, "failed to notify post migrate bucket", "request", req, "error", resp.GetErr())
@@ -243,12 +243,12 @@ func (s *GfSpClient) ResetRecoveryFailedList(ctx context.Context) ([]string, err
conn, connErr := s.ManagerConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect manager", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect manager, error: ", connErr)
}
resp, err := gfspserver.NewGfSpManageServiceClient(conn).GfSpResetRecoveryFailedList(ctx, &gfspserver.GfSpResetRecoveryFailedListRequest{})
if err != nil {
log.CtxErrorw(ctx, "client failed to reset manager's recovery failed list", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to reset manager's recovery failed list, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to reset manager's recovery failed list, error: ", err)
}
return resp.GetRecoveryFailedList(), nil
}
196 changes: 98 additions & 98 deletions base/gfspclient/metadata.go

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions base/gfspclient/p2p.go
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ func (s *GfSpClient) AskSecondaryReplicatePieceApproval(ctx context.Context, tas
conn, connErr := s.P2PConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect p2p", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect p2p, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect p2p, error: ", connErr)
}
req := &gfspserver.GfSpAskSecondaryReplicatePieceApprovalRequest{
ReplicatePieceApprovalTask: task.(*gfsptask.GfSpReplicatePieceApprovalTask),
@@ -25,7 +25,7 @@ func (s *GfSpClient) AskSecondaryReplicatePieceApproval(ctx context.Context, tas
resp, err := gfspserver.NewGfSpP2PServiceClient(conn).GfSpAskSecondaryReplicatePieceApproval(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to ask replicate piece approval", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to ask replicate piece approval, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to ask replicate piece approval, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
@@ -37,12 +37,12 @@ func (s *GfSpClient) QueryP2PBootstrap(ctx context.Context) ([]string, error) {
conn, connErr := s.P2PConn(ctx)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect p2p", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect p2p, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect p2p, error: ", connErr)
}
resp, err := gfspserver.NewGfSpP2PServiceClient(conn).GfSpQueryP2PBootstrap(ctx, &gfspserver.GfSpQueryP2PNodeRequest{})
if err != nil {
log.CtxErrorw(ctx, "client failed to query p2p bootstrap", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to query p2p bootstrap, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to query p2p bootstrap, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
12 changes: 6 additions & 6 deletions base/gfspclient/query_task.go
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ func (s *GfSpClient) QueryTasks(ctx context.Context, endpoint string, subKey str
conn, connErr := s.Connection(ctx, endpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect gfsp server", "error", connErr)
return nil, ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: " + connErr.Error())
return nil, ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpQueryTasksRequest{
@@ -23,7 +23,7 @@ func (s *GfSpClient) QueryTasks(ctx context.Context, endpoint string, subKey str
resp, err := gfspserver.NewGfSpQueryTaskServiceClient(conn).GfSpQueryTasks(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to query tasks", "error", err)
return nil, ErrRPCUnknownWithDetail("client failed to query tasks, error: " + err.Error())
return nil, ErrRPCUnknownWithDetail("client failed to query tasks, error: ", err)
}
if resp.GetErr() != nil {
return nil, resp.GetErr()
@@ -35,14 +35,14 @@ func (s *GfSpClient) QueryBucketMigrate(ctx context.Context, endpoint string, op
conn, connErr := s.Connection(ctx, endpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect gfsp server", "error", connErr)
return "", ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: " + connErr.Error())
return "", ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpQueryBucketMigrateRequest{}
resp, err := gfspserver.NewGfSpQueryTaskServiceClient(conn).GfSpQueryBucketMigrate(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to query tasks", "error", err)
return "", ErrRPCUnknownWithDetail("client failed to query tasks, error: " + err.Error())
return "", ErrRPCUnknownWithDetail("client failed to query tasks, error: ", err)
}
if resp.GetErr() != nil {
return "", resp.GetErr()
@@ -58,14 +58,14 @@ func (s *GfSpClient) QuerySPExit(ctx context.Context, endpoint string, opts ...g
conn, connErr := s.Connection(ctx, endpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect gfsp server", "error", connErr)
return "", ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: " + connErr.Error())
return "", ErrRPCUnknownWithDetail("client failed to connect gfsp server, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpQuerySpExitRequest{}
resp, err := gfspserver.NewGfSpQueryTaskServiceClient(conn).GfSpQuerySpExit(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to query tasks", "error", err)
return "", ErrRPCUnknownWithDetail("client failed to query tasks, error: " + err.Error())
return "", ErrRPCUnknownWithDetail("client failed to query tasks, error: ", err)
}
if resp.GetErr() != nil {
return "", resp.GetErr()
8 changes: 4 additions & 4 deletions base/gfspclient/receiver.go
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ func (s *GfSpClient) ReplicatePiece(ctx context.Context, task coretask.ReceivePi
conn, connErr := s.Connection(ctx, s.receiverEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect receiver", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect receiver, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect receiver, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpReplicatePieceRequest{
@@ -30,7 +30,7 @@ func (s *GfSpClient) ReplicatePiece(ctx context.Context, task coretask.ReceivePi
metrics.PerfReceivePieceTimeHistogram.WithLabelValues("receive_piece_client_total_time").Observe(time.Since(startTime).Seconds())
if err != nil {
log.CtxErrorw(ctx, "client failed to replicate piece", "error", err)
return ErrRPCUnknownWithDetail("client failed to replicate piece, error: " + err.Error())
return ErrRPCUnknownWithDetail("client failed to replicate piece, error: ", err)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -43,7 +43,7 @@ func (s *GfSpClient) DoneReplicatePiece(ctx context.Context, task coretask.Recei
conn, connErr := s.Connection(ctx, s.receiverEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect receiver", "error", connErr)
return nil, nil, ErrRPCUnknownWithDetail("client failed to connect receiver, error: " + connErr.Error())
return nil, nil, ErrRPCUnknownWithDetail("client failed to connect receiver, error: ", connErr)
}
defer conn.Close()
req := &gfspserver.GfSpDoneReplicatePieceRequest{
@@ -54,7 +54,7 @@ func (s *GfSpClient) DoneReplicatePiece(ctx context.Context, task coretask.Recei
metrics.PerfReceivePieceTimeHistogram.WithLabelValues("receive_piece_done_client_total_time").Observe(time.Since(startTime).Seconds())
if err != nil {
log.CtxErrorw(ctx, "client failed to done replicate piece", "error", err)
return nil, nil, ErrRPCUnknownWithDetail("client failed to done replicate piece, error: " + err.Error())
return nil, nil, ErrRPCUnknownWithDetail("client failed to done replicate piece, error: ", err)
}
if resp.GetErr() != nil {
return nil, nil, resp.GetErr()
96 changes: 48 additions & 48 deletions base/gfspclient/signer.go

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions base/gfspclient/uploader.go
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjec
conn, connErr := s.Connection(ctx, s.uploaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect uploader", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect uploader, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect uploader, error: ", connErr)
}
var sendSize = 0
defer func() {
@@ -35,7 +35,7 @@ func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjec
client, err := gfspserver.NewGfSpUploadServiceClient(conn).GfSpUploadObject(ctx)
if err != nil {
log.CtxErrorw(ctx, "failed to new uploader stream client", "error", err)
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: " + err.Error())
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: ", err)
}
buf := make([]byte, DefaultStreamBufSize)
metrics.PerfPutObjectTime.WithLabelValues("client_put_object_prepare_cost").Observe(time.Since(startTime).Seconds())
@@ -58,7 +58,7 @@ func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjec
metrics.PerfPutObjectTime.WithLabelValues("client_put_object_send_end").Observe(time.Since(startTime).Seconds())
if err != nil {
log.CtxErrorw(ctx, "failed to send the last upload stream data", "error", err)
return ErrRPCUnknownWithDetail("failed to send the last upload stream data, error: " + err.Error())
return ErrRPCUnknownWithDetail("failed to send the last upload stream data, error: ", err)
}
}
startCloseClient := time.Now()
@@ -67,7 +67,7 @@ func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjec
metrics.PerfPutObjectTime.WithLabelValues("client_put_object_send_last_end").Observe(time.Since(time.Unix(task.GetCreateTime(), 0)).Seconds())
if closeErr != nil {
log.CtxErrorw(ctx, "failed to close upload stream", "error", closeErr)
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: " + closeErr.Error())
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: ", closeErr)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -88,7 +88,7 @@ func (s *GfSpClient) UploadObject(ctx context.Context, task coretask.UploadObjec
metrics.PerfPutObjectTime.WithLabelValues("client_put_object_send_end").Observe(time.Since(time.Unix(task.GetCreateTime(), 0)).Seconds())
if err != nil {
log.CtxErrorw(ctx, "failed to send the upload stream data", "error", err)
return ErrRPCUnknownWithDetail("failed to send the upload stream data, error: " + err.Error())
return ErrRPCUnknownWithDetail("failed to send the upload stream data, error: ", err)
}
}
}
@@ -98,7 +98,7 @@ func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.Re
conn, connErr := s.Connection(ctx, s.uploaderEndpoint, opts...)
if connErr != nil {
log.CtxErrorw(ctx, "client failed to connect uploader", "error", connErr)
return ErrRPCUnknownWithDetail("client failed to connect uploader, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("client failed to connect uploader, error: ", connErr)
}
var sendSize = 0
defer func() {
@@ -114,7 +114,7 @@ func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.Re

if err != nil {
log.CtxErrorw(ctx, "failed to new uploader stream client", "error", err)
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: " + connErr.Error())
return ErrRPCUnknownWithDetail("failed to new uploader stream client, error: ", connErr)
}
var (
buf = make([]byte, DefaultStreamBufSize)
@@ -131,13 +131,13 @@ func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.Re
err = client.Send(req)
if err != nil {
log.CtxErrorw(ctx, "failed to send the last upload stream data", "error", err)
return ErrRPCUnknownWithDetail("failed to send the last upload stream data, error: " + err.Error())
return ErrRPCUnknownWithDetail("failed to send the last upload stream data, error: ", err)
}
}
resp, closeErr := client.CloseAndRecv()
if closeErr != nil {
log.CtxErrorw(ctx, "failed to close upload stream", "error", closeErr)
return ErrRPCUnknownWithDetail("failed to close upload stream, error: " + closeErr.Error())
return ErrRPCUnknownWithDetail("failed to close upload stream, error: ", closeErr)
}
if resp.GetErr() != nil {
return resp.GetErr()
@@ -155,7 +155,7 @@ func (s *GfSpClient) ResumableUploadObject(ctx context.Context, task coretask.Re
err = client.Send(req)
if err != nil {
log.CtxErrorw(ctx, "failed to send the upload stream data", "error", err)
return ErrRPCUnknownWithDetail("failed to send the upload stream data, error: " + err.Error())
return ErrRPCUnknownWithDetail("failed to send the upload stream data, error: ", err)
}
}
}
25 changes: 24 additions & 1 deletion base/types/gfsperrors/error.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package gfsperrors

import (
"encoding/json"
"net/http"
"sort"
"strings"
"sync"
)

@@ -15,7 +17,8 @@ const (

// Error implements the error interface for compatibility with built-in error.
func (m *GfSpError) Error() string {
return m.String()
str, _ := json.Marshal(m)
return string(str)
}

// SetError sets the Description field by Error(), it is use for change the
@@ -43,6 +46,26 @@ func init() {
})
}

func GetGfSpErr(err error) *GfSpError {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what if the passed-in err is already a GfSpError?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added type assertions

if err == nil {
return nil
}
if gfspErr, ok := err.(*GfSpError); ok {
return gfspErr
}
i := strings.Index(err.Error(), "desc = ")
if i == -1 || len(err.Error())-1 < i+6 {
return nil
}
errInfo := err.Error()[i+6:]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does [i+6:] fit all cases?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The result after the rpc call is "rpc error: code = Unknown desc = xxx" We only focus on xxx

var gfspErr GfSpError
unmarshalErr := json.Unmarshal([]byte(errInfo), &gfspErr)
if unmarshalErr == nil && gfspErr.HttpStatusCode != 0 {
return &gfspErr
}
return nil
}

// MakeGfSpError returns an GfSpError from the build-in error interface. It is
// difficult to predefine all errors. For undefined errors, there needs to be a
// way to capture them and return them to the client according to the GfSpError
2 changes: 1 addition & 1 deletion base/types/gfsperrors/error_test.go
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ import (
func TestGfSpError_Error(t *testing.T) {
m := &GfSpError{}
result := m.Error()
assert.Equal(t, "", result)
assert.Equal(t, "{}", result)
}

func TestGfSpError_SetError(t *testing.T) {