Skip to content

Commit

Permalink
feat: add deposit and delete operation to GVG in signer and fix a few…
Browse files Browse the repository at this point in the history
… issue (#1258)

* feat: monitor GVG add deposit and delete operation

* chore: add log

* fix: sort imports

* fix: fix log
  • Loading branch information
alexgao001 authored Dec 5, 2023
1 parent c917422 commit 4142018
Show file tree
Hide file tree
Showing 18 changed files with 705 additions and 112 deletions.
6 changes: 6 additions & 0 deletions base/gfspapp/app_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,12 @@ const (
SignerSuccessRejectMigrateBucket = "signer_reject_migrate_bucket_success"
SignerFailureRejectMigrateBucket = "signer_reject_migrate_bucket_failure"

SignerSuccessDeposit = "signer_deposit_success"
SignerFailureDeposit = "signer_deposit_failure"

SignerSuccessDeleteGlobalVirtualGroup = "signer_delete_global_virtual_group_success"
SignerFailureDeleteGlobalVirtualGroup = "signer_delete_global_virtual_group_failure"

UploaderSuccessPutObject = "uploader_put_object_success"
UploaderFailurePutObject = "uploader_put_object_failure"
)
Expand Down
20 changes: 20 additions & 0 deletions base/gfspapp/sign_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,26 @@ func (g *GfSpBaseApp) GfSpSign(ctx context.Context, req *gfspserver.GfSpSignRequ
metrics.ReqCounter.WithLabelValues(SignerSuccessRejectMigrateBucket).Inc()
metrics.ReqTime.WithLabelValues(SignerSuccessRejectMigrateBucket).Observe(time.Since(startTime).Seconds())
}
case *gfspserver.GfSpSignRequest_Deposit:
txHash, err = g.signer.Deposit(ctx, t.Deposit)
if err != nil {
log.CtxErrorw(ctx, "failed to deposit", "error", err)
metrics.ReqCounter.WithLabelValues(SignerFailureDeposit).Inc()
metrics.ReqTime.WithLabelValues(SignerFailureDeposit).Observe(time.Since(startTime).Seconds())
} else {
metrics.ReqCounter.WithLabelValues(SignerSuccessDeposit).Inc()
metrics.ReqTime.WithLabelValues(SignerSuccessDeposit).Observe(time.Since(startTime).Seconds())
}
case *gfspserver.GfSpSignRequest_DeleteGlobalVirtualGroup:
txHash, err = g.signer.DeleteGlobalVirtualGroup(ctx, t.DeleteGlobalVirtualGroup)
if err != nil {
log.CtxErrorw(ctx, "failed to delete global virtual group", "error", err)
metrics.ReqCounter.WithLabelValues(SignerFailureDeleteGlobalVirtualGroup).Inc()
metrics.ReqTime.WithLabelValues(SignerFailureDeleteGlobalVirtualGroup).Observe(time.Since(startTime).Seconds())
} else {
metrics.ReqCounter.WithLabelValues(SignerSuccessDeleteGlobalVirtualGroup).Inc()
metrics.ReqTime.WithLabelValues(SignerSuccessDeleteGlobalVirtualGroup).Observe(time.Since(startTime).Seconds())
}
default:
log.CtxError(ctx, "unknown gfsp sign request type")
return &gfspserver.GfSpSignResponse{
Expand Down
2 changes: 2 additions & 0 deletions base/gfspclient/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,8 @@ type SignerAPI interface {
SignMigrateGVG(ctx context.Context, task *gfsptask.GfSpMigrateGVGTask) ([]byte, error)
SignBucketMigrationInfo(ctx context.Context, task *gfsptask.GfSpBucketMigrationInfo) ([]byte, error)
RejectMigrateBucket(ctx context.Context, rejectMigrateBucket *storagetypes.MsgRejectMigrateBucket) (string, error)
Deposit(ctx context.Context, deposit *virtualgrouptypes.MsgDeposit) (string, error)
DeleteGlobalVirtualGroup(ctx context.Context, deleteGVG *virtualgrouptypes.MsgDeleteGlobalVirtualGroup) (string, error)
}

// UploaderAPI for mock use
Expand Down
60 changes: 60 additions & 0 deletions base/gfspclient/interface_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 44 additions & 0 deletions base/gfspclient/signer.go
Original file line number Diff line number Diff line change
Expand Up @@ -544,3 +544,47 @@ func (s *GfSpClient) RejectMigrateBucket(ctx context.Context, rejectMigrateBucke
}
return resp.GetTxHash(), nil
}

func (s *GfSpClient) Deposit(ctx context.Context, deposit *virtualgrouptypes.MsgDeposit) (string, error) {
conn, err := s.SignerConn(ctx)
if err != nil {
log.Errorw("failed to connect to signer", "error", err)
return "", ErrRPCUnknownWithDetail("client failed to connect to signer, error: ", err)
}
req := &gfspserver.GfSpSignRequest{
Request: &gfspserver.GfSpSignRequest_Deposit{
Deposit: deposit,
},
}
resp, err := gfspserver.NewGfSpSignServiceClient(conn).GfSpSign(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to sign deposit", "msg", deposit, "error", err)
return "", ErrRPCUnknownWithDetail("client failed to sign deposit, error: ", err)
}
if resp.GetErr() != nil {
return "", resp.GetErr()
}
return resp.GetTxHash(), nil
}

func (s *GfSpClient) DeleteGlobalVirtualGroup(ctx context.Context, deleteGVG *virtualgrouptypes.MsgDeleteGlobalVirtualGroup) (string, error) {
conn, err := s.SignerConn(ctx)
if err != nil {
log.Errorw("failed to connect to signer", "error", err)
return "", ErrRPCUnknownWithDetail("client failed to connect to signer, error: ", err)
}
req := &gfspserver.GfSpSignRequest{
Request: &gfspserver.GfSpSignRequest_DeleteGlobalVirtualGroup{
DeleteGlobalVirtualGroup: deleteGVG,
},
}
resp, err := gfspserver.NewGfSpSignServiceClient(conn).GfSpSign(ctx, req)
if err != nil {
log.CtxErrorw(ctx, "client failed to sign delete GVG", "msg", deleteGVG, "error", err)
return "", ErrRPCUnknownWithDetail("client failed to sign delete GVG, error: ", err)
}
if resp.GetErr() != nil {
return "", resp.GetErr()
}
return resp.GetTxHash(), nil
}
Loading

0 comments on commit 4142018

Please sign in to comment.