This is an automated email from the ASF dual-hosted git repository.

zhonghongsheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shardingsphere-on-cloud.git


The following commit(s) were added to refs/heads/main by this push:
     new 3d87f11  feat: add threads parameter to openGauss restore subcommand 
(#465)
3d87f11 is described below

commit 3d87f11c573c94bd9f02c206238b94dfdf3adaf7
Author: liyao <[email protected]>
AuthorDate: Thu Nov 16 12:56:09 2023 +0800

    feat: add threads parameter to openGauss restore subcommand (#465)
    
    * feat: add threads parameter to restore command
    
    * feat: add threadsnum to agent server
    
    * feat: add threadsNum to cli
    
    * chore: update opengauss mock
---
 pitr/agent/internal/handler/restore.go      |   2 +-
 pitr/agent/internal/handler/view/restore.go |   1 +
 pitr/agent/internal/pkg/mocks/opengauss.go  | 229 ++++++++++++++--------------
 pitr/agent/internal/pkg/opengauss.go        |   8 +-
 pitr/cli/internal/cmd/restore.go            |   3 +-
 pitr/cli/internal/pkg/model/as_restore.go   |   1 +
 6 files changed, 123 insertions(+), 121 deletions(-)

diff --git a/pitr/agent/internal/handler/restore.go 
b/pitr/agent/internal/handler/restore.go
index 609a343..722d985 100644
--- a/pitr/agent/internal/handler/restore.go
+++ b/pitr/agent/internal/handler/restore.go
@@ -78,7 +78,7 @@ func Restore(ctx *fiber.Ctx) (err error) {
        }()
 
        // restore data from backup
-       if err = pkg.OG.Restore(in.DnBackupPath, in.Instance, in.DnBackupID); 
err != nil {
+       if err = pkg.OG.Restore(in.DnBackupPath, in.Instance, in.DnBackupID, 
in.DnThreadsNum); err != nil {
                efmt := "pkg.OG.Restore 
failure[path=%s,instance=%s,backupID=%s], err wrap: %w"
                err = fmt.Errorf(efmt, in.DnBackupPath, in.Instance, 
in.DnBackupID, err)
                status = "restore failure"
diff --git a/pitr/agent/internal/handler/view/restore.go 
b/pitr/agent/internal/handler/view/restore.go
index 60d4cdf..15f5f07 100644
--- a/pitr/agent/internal/handler/view/restore.go
+++ b/pitr/agent/internal/handler/view/restore.go
@@ -27,6 +27,7 @@ type RestoreIn struct {
        Instance     string `json:"instance"`
        DnBackupPath string `json:"dn_backup_path"`
        DnBackupID   string `json:"dn_backup_id"`
+       DnThreadsNum uint8  `json:"dn_threads_num"`
 }
 
 //nolint:dupl
diff --git a/pitr/agent/internal/pkg/mocks/opengauss.go 
b/pitr/agent/internal/pkg/mocks/opengauss.go
index 256ad75..290271e 100644
--- a/pitr/agent/internal/pkg/mocks/opengauss.go
+++ b/pitr/agent/internal/pkg/mocks/opengauss.go
@@ -1,111 +1,111 @@
 // Code generated by MockGen. DO NOT EDIT.
-// Source: opengauss.go
+// Source: internal/pkg/opengauss.go
 
 // Package mock_pkg is a generated GoMock package.
 package mock_pkg
 
 import (
-       reflect "reflect"
-
        model 
"github.com/apache/shardingsphere-on-cloud/pitr/agent/internal/pkg/model"
        gomock "github.com/golang/mock/gomock"
+       reflect "reflect"
 )
 
-// MockIOpenGauss is a mock of IOpenGauss interface.
+// MockIOpenGauss is a mock of IOpenGauss interface
 type MockIOpenGauss struct {
        ctrl     *gomock.Controller
        recorder *MockIOpenGaussMockRecorder
 }
 
-// MockIOpenGaussMockRecorder is the mock recorder for MockIOpenGauss.
+// MockIOpenGaussMockRecorder is the mock recorder for MockIOpenGauss
 type MockIOpenGaussMockRecorder struct {
        mock *MockIOpenGauss
 }
 
-// NewMockIOpenGauss creates a new mock instance.
+// NewMockIOpenGauss creates a new mock instance
 func NewMockIOpenGauss(ctrl *gomock.Controller) *MockIOpenGauss {
        mock := &MockIOpenGauss{ctrl: ctrl}
        mock.recorder = &MockIOpenGaussMockRecorder{mock}
        return mock
 }
 
-// EXPECT returns an object that allows the caller to indicate expected use.
+// EXPECT returns an object that allows the caller to indicate expected use
 func (m *MockIOpenGauss) EXPECT() *MockIOpenGaussMockRecorder {
        return m.recorder
 }
 
-// AddInstance mocks base method.
-func (m *MockIOpenGauss) AddInstance(backupPath, instance string) error {
+// AsyncBackup mocks base method
+func (m *MockIOpenGauss) AsyncBackup(backupPath, instanceName, backupMode 
string, threadsNum uint8, dbPort uint16) (string, error) {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "AddInstance", backupPath, instance)
-       ret0, _ := ret[0].(error)
-       return ret0
+       ret := m.ctrl.Call(m, "AsyncBackup", backupPath, instanceName, 
backupMode, threadsNum, dbPort)
+       ret0, _ := ret[0].(string)
+       ret1, _ := ret[1].(error)
+       return ret0, ret1
 }
 
-// AddInstance indicates an expected call of AddInstance.
-func (mr *MockIOpenGaussMockRecorder) AddInstance(backupPath, instance 
interface{}) *gomock.Call {
+// AsyncBackup indicates an expected call of AsyncBackup
+func (mr *MockIOpenGaussMockRecorder) AsyncBackup(backupPath, instanceName, 
backupMode, threadsNum, dbPort interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddInstance", 
reflect.TypeOf((*MockIOpenGauss)(nil).AddInstance), backupPath, instance)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsyncBackup", 
reflect.TypeOf((*MockIOpenGauss)(nil).AsyncBackup), backupPath, instanceName, 
backupMode, threadsNum, dbPort)
 }
 
-// AsyncBackup mocks base method.
-func (m *MockIOpenGauss) AsyncBackup(backupPath, instanceName, backupMode 
string, threadsNum uint8, dbPort uint16) (string, error) {
+// ShowBackup mocks base method
+func (m *MockIOpenGauss) ShowBackup(backupPath, instanceName, backupID string) 
(*model.Backup, error) {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "AsyncBackup", backupPath, instanceName, 
backupMode, threadsNum, dbPort)
-       ret0, _ := ret[0].(string)
+       ret := m.ctrl.Call(m, "ShowBackup", backupPath, instanceName, backupID)
+       ret0, _ := ret[0].(*model.Backup)
        ret1, _ := ret[1].(error)
        return ret0, ret1
 }
 
-// AsyncBackup indicates an expected call of AsyncBackup.
-func (mr *MockIOpenGaussMockRecorder) AsyncBackup(backupPath, instanceName, 
backupMode, threadsNum, dbPort interface{}) *gomock.Call {
+// ShowBackup indicates an expected call of ShowBackup
+func (mr *MockIOpenGaussMockRecorder) ShowBackup(backupPath, instanceName, 
backupID interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AsyncBackup", 
reflect.TypeOf((*MockIOpenGauss)(nil).AsyncBackup), backupPath, instanceName, 
backupMode, threadsNum, dbPort)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShowBackup", 
reflect.TypeOf((*MockIOpenGauss)(nil).ShowBackup), backupPath, instanceName, 
backupID)
 }
 
-// Auth mocks base method.
-func (m *MockIOpenGauss) Auth(user, password, dbName string, dbPort uint16) 
error {
+// Init mocks base method
+func (m *MockIOpenGauss) Init(backupPath string) error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Auth", user, password, dbName, dbPort)
+       ret := m.ctrl.Call(m, "Init", backupPath)
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// Auth indicates an expected call of Auth.
-func (mr *MockIOpenGaussMockRecorder) Auth(user, password, dbName, dbPort 
interface{}) *gomock.Call {
+// Init indicates an expected call of Init
+func (mr *MockIOpenGaussMockRecorder) Init(backupPath interface{}) 
*gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Auth", 
reflect.TypeOf((*MockIOpenGauss)(nil).Auth), user, password, dbName, dbPort)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", 
reflect.TypeOf((*MockIOpenGauss)(nil).Init), backupPath)
 }
 
-// CheckSchema mocks base method.
-func (m *MockIOpenGauss) CheckSchema(user, password, dbName string, dbPort 
uint16, schema string) error {
+// AddInstance mocks base method
+func (m *MockIOpenGauss) AddInstance(backupPath, instance string) error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "CheckSchema", user, password, dbName, dbPort, 
schema)
+       ret := m.ctrl.Call(m, "AddInstance", backupPath, instance)
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// CheckSchema indicates an expected call of CheckSchema.
-func (mr *MockIOpenGaussMockRecorder) CheckSchema(user, password, dbName, 
dbPort, schema interface{}) *gomock.Call {
+// AddInstance indicates an expected call of AddInstance
+func (mr *MockIOpenGaussMockRecorder) AddInstance(backupPath, instance 
interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckSchema", 
reflect.TypeOf((*MockIOpenGauss)(nil).CheckSchema), user, password, dbName, 
dbPort, schema)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddInstance", 
reflect.TypeOf((*MockIOpenGauss)(nil).AddInstance), backupPath, instance)
 }
 
-// CleanPgDataTemp mocks base method.
-func (m *MockIOpenGauss) CleanPgDataTemp() error {
+// DelInstance mocks base method
+func (m *MockIOpenGauss) DelInstance(backupPath, instance string) error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "CleanPgDataTemp")
+       ret := m.ctrl.Call(m, "DelInstance", backupPath, instance)
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// CleanPgDataTemp indicates an expected call of CleanPgDataTemp.
-func (mr *MockIOpenGaussMockRecorder) CleanPgDataTemp() *gomock.Call {
+// DelInstance indicates an expected call of DelInstance
+func (mr *MockIOpenGaussMockRecorder) DelInstance(backupPath, instance 
interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"CleanPgDataTemp", reflect.TypeOf((*MockIOpenGauss)(nil).CleanPgDataTemp))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DelInstance", 
reflect.TypeOf((*MockIOpenGauss)(nil).DelInstance), backupPath, instance)
 }
 
-// DelBackup mocks base method.
+// DelBackup mocks base method
 func (m *MockIOpenGauss) DelBackup(backupPath, instance, backupID string) 
error {
        m.ctrl.T.Helper()
        ret := m.ctrl.Call(m, "DelBackup", backupPath, instance, backupID)
@@ -113,151 +113,150 @@ func (m *MockIOpenGauss) DelBackup(backupPath, 
instance, backupID string) error
        return ret0
 }
 
-// DelBackup indicates an expected call of DelBackup.
+// DelBackup indicates an expected call of DelBackup
 func (mr *MockIOpenGaussMockRecorder) DelBackup(backupPath, instance, backupID 
interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
        return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DelBackup", 
reflect.TypeOf((*MockIOpenGauss)(nil).DelBackup), backupPath, instance, 
backupID)
 }
 
-// DelInstance mocks base method.
-func (m *MockIOpenGauss) DelInstance(backupPath, instance string) error {
+// Start mocks base method
+func (m *MockIOpenGauss) Start() error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "DelInstance", backupPath, instance)
+       ret := m.ctrl.Call(m, "Start")
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// DelInstance indicates an expected call of DelInstance.
-func (mr *MockIOpenGaussMockRecorder) DelInstance(backupPath, instance 
interface{}) *gomock.Call {
+// Start indicates an expected call of Start
+func (mr *MockIOpenGaussMockRecorder) Start() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DelInstance", 
reflect.TypeOf((*MockIOpenGauss)(nil).DelInstance), backupPath, instance)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", 
reflect.TypeOf((*MockIOpenGauss)(nil).Start))
 }
 
-// Init mocks base method.
-func (m *MockIOpenGauss) Init(backupPath string) error {
+// Stop mocks base method
+func (m *MockIOpenGauss) Stop() error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Init", backupPath)
+       ret := m.ctrl.Call(m, "Stop")
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// Init indicates an expected call of Init.
-func (mr *MockIOpenGaussMockRecorder) Init(backupPath interface{}) 
*gomock.Call {
+// Stop indicates an expected call of Stop
+func (mr *MockIOpenGaussMockRecorder) Stop() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", 
reflect.TypeOf((*MockIOpenGauss)(nil).Init), backupPath)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", 
reflect.TypeOf((*MockIOpenGauss)(nil).Stop))
 }
 
-// MvPgDataToTemp mocks base method.
-func (m *MockIOpenGauss) MvPgDataToTemp() error {
+// Status mocks base method
+func (m *MockIOpenGauss) Status() (string, error) {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "MvPgDataToTemp")
-       ret0, _ := ret[0].(error)
-       return ret0
+       ret := m.ctrl.Call(m, "Status")
+       ret0, _ := ret[0].(string)
+       ret1, _ := ret[1].(error)
+       return ret0, ret1
 }
 
-// MvPgDataToTemp indicates an expected call of MvPgDataToTemp.
-func (mr *MockIOpenGaussMockRecorder) MvPgDataToTemp() *gomock.Call {
+// Status indicates an expected call of Status
+func (mr *MockIOpenGaussMockRecorder) Status() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MvPgDataToTemp", 
reflect.TypeOf((*MockIOpenGauss)(nil).MvPgDataToTemp))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Status", 
reflect.TypeOf((*MockIOpenGauss)(nil).Status))
 }
 
-// MvTempToPgData mocks base method.
-func (m *MockIOpenGauss) MvTempToPgData() error {
+// Restore mocks base method
+func (m *MockIOpenGauss) Restore(backupPath, instance, backupID string, 
threadsNum uint8) error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "MvTempToPgData")
+       ret := m.ctrl.Call(m, "Restore", backupPath, instance, backupID, 
threadsNum)
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// MvTempToPgData indicates an expected call of MvTempToPgData.
-func (mr *MockIOpenGaussMockRecorder) MvTempToPgData() *gomock.Call {
+// Restore indicates an expected call of Restore
+func (mr *MockIOpenGaussMockRecorder) Restore(backupPath, instance, backupID, 
threadsNum interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MvTempToPgData", 
reflect.TypeOf((*MockIOpenGauss)(nil).MvTempToPgData))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Restore", 
reflect.TypeOf((*MockIOpenGauss)(nil).Restore), backupPath, instance, backupID, 
threadsNum)
 }
 
-// Restore mocks base method.
-func (m *MockIOpenGauss) Restore(backupPath, instance, backupID string) error {
+// ShowBackupList mocks base method
+func (m *MockIOpenGauss) ShowBackupList(backupPath, instanceName string) 
([]*model.Backup, error) {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Restore", backupPath, instance, backupID)
-       ret0, _ := ret[0].(error)
-       return ret0
+       ret := m.ctrl.Call(m, "ShowBackupList", backupPath, instanceName)
+       ret0, _ := ret[0].([]*model.Backup)
+       ret1, _ := ret[1].(error)
+       return ret0, ret1
 }
 
-// Restore indicates an expected call of Restore.
-func (mr *MockIOpenGaussMockRecorder) Restore(backupPath, instance, backupID 
interface{}) *gomock.Call {
+// ShowBackupList indicates an expected call of ShowBackupList
+func (mr *MockIOpenGaussMockRecorder) ShowBackupList(backupPath, instanceName 
interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Restore", 
reflect.TypeOf((*MockIOpenGauss)(nil).Restore), backupPath, instance, backupID)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShowBackupList", 
reflect.TypeOf((*MockIOpenGauss)(nil).ShowBackupList), backupPath, instanceName)
 }
 
-// ShowBackup mocks base method.
-func (m *MockIOpenGauss) ShowBackup(backupPath, instanceName, backupID string) 
(*model.Backup, error) {
+// Auth mocks base method
+func (m *MockIOpenGauss) Auth(user, password, dbName string, dbPort uint16) 
error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "ShowBackup", backupPath, instanceName, backupID)
-       ret0, _ := ret[0].(*model.Backup)
-       ret1, _ := ret[1].(error)
-       return ret0, ret1
+       ret := m.ctrl.Call(m, "Auth", user, password, dbName, dbPort)
+       ret0, _ := ret[0].(error)
+       return ret0
 }
 
-// ShowBackup indicates an expected call of ShowBackup.
-func (mr *MockIOpenGaussMockRecorder) ShowBackup(backupPath, instanceName, 
backupID interface{}) *gomock.Call {
+// Auth indicates an expected call of Auth
+func (mr *MockIOpenGaussMockRecorder) Auth(user, password, dbName, dbPort 
interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShowBackup", 
reflect.TypeOf((*MockIOpenGauss)(nil).ShowBackup), backupPath, instanceName, 
backupID)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Auth", 
reflect.TypeOf((*MockIOpenGauss)(nil).Auth), user, password, dbName, dbPort)
 }
 
-// ShowBackupList mocks base method.
-func (m *MockIOpenGauss) ShowBackupList(backupPath, instanceName string) 
([]*model.Backup, error) {
+// CheckSchema mocks base method
+func (m *MockIOpenGauss) CheckSchema(user, password, dbName string, dbPort 
uint16, schema string) error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "ShowBackupList", backupPath, instanceName)
-       ret0, _ := ret[0].([]*model.Backup)
-       ret1, _ := ret[1].(error)
-       return ret0, ret1
+       ret := m.ctrl.Call(m, "CheckSchema", user, password, dbName, dbPort, 
schema)
+       ret0, _ := ret[0].(error)
+       return ret0
 }
 
-// ShowBackupList indicates an expected call of ShowBackupList.
-func (mr *MockIOpenGaussMockRecorder) ShowBackupList(backupPath, instanceName 
interface{}) *gomock.Call {
+// CheckSchema indicates an expected call of CheckSchema
+func (mr *MockIOpenGaussMockRecorder) CheckSchema(user, password, dbName, 
dbPort, schema interface{}) *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ShowBackupList", 
reflect.TypeOf((*MockIOpenGauss)(nil).ShowBackupList), backupPath, instanceName)
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckSchema", 
reflect.TypeOf((*MockIOpenGauss)(nil).CheckSchema), user, password, dbName, 
dbPort, schema)
 }
 
-// Start mocks base method.
-func (m *MockIOpenGauss) Start() error {
+// MvTempToPgData mocks base method
+func (m *MockIOpenGauss) MvTempToPgData() error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Start")
+       ret := m.ctrl.Call(m, "MvTempToPgData")
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// Start indicates an expected call of Start.
-func (mr *MockIOpenGaussMockRecorder) Start() *gomock.Call {
+// MvTempToPgData indicates an expected call of MvTempToPgData
+func (mr *MockIOpenGaussMockRecorder) MvTempToPgData() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", 
reflect.TypeOf((*MockIOpenGauss)(nil).Start))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MvTempToPgData", 
reflect.TypeOf((*MockIOpenGauss)(nil).MvTempToPgData))
 }
 
-// Status mocks base method.
-func (m *MockIOpenGauss) Status() (string, error) {
+// MvPgDataToTemp mocks base method
+func (m *MockIOpenGauss) MvPgDataToTemp() error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Status")
-       ret0, _ := ret[0].(string)
-       ret1, _ := ret[1].(error)
-       return ret0, ret1
+       ret := m.ctrl.Call(m, "MvPgDataToTemp")
+       ret0, _ := ret[0].(error)
+       return ret0
 }
 
-// Status indicates an expected call of Status.
-func (mr *MockIOpenGaussMockRecorder) Status() *gomock.Call {
+// MvPgDataToTemp indicates an expected call of MvPgDataToTemp
+func (mr *MockIOpenGaussMockRecorder) MvPgDataToTemp() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Status", 
reflect.TypeOf((*MockIOpenGauss)(nil).Status))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MvPgDataToTemp", 
reflect.TypeOf((*MockIOpenGauss)(nil).MvPgDataToTemp))
 }
 
-// Stop mocks base method.
-func (m *MockIOpenGauss) Stop() error {
+// CleanPgDataTemp mocks base method
+func (m *MockIOpenGauss) CleanPgDataTemp() error {
        m.ctrl.T.Helper()
-       ret := m.ctrl.Call(m, "Stop")
+       ret := m.ctrl.Call(m, "CleanPgDataTemp")
        ret0, _ := ret[0].(error)
        return ret0
 }
 
-// Stop indicates an expected call of Stop.
-func (mr *MockIOpenGaussMockRecorder) Stop() *gomock.Call {
+// CleanPgDataTemp indicates an expected call of CleanPgDataTemp
+func (mr *MockIOpenGaussMockRecorder) CleanPgDataTemp() *gomock.Call {
        mr.mock.ctrl.T.Helper()
-       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", 
reflect.TypeOf((*MockIOpenGauss)(nil).Stop))
+       return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, 
"CleanPgDataTemp", reflect.TypeOf((*MockIOpenGauss)(nil).CleanPgDataTemp))
 }
diff --git a/pitr/agent/internal/pkg/opengauss.go 
b/pitr/agent/internal/pkg/opengauss.go
index ad3220d..b1b8b13 100644
--- a/pitr/agent/internal/pkg/opengauss.go
+++ b/pitr/agent/internal/pkg/opengauss.go
@@ -50,7 +50,7 @@ type (
                Start() error
                Stop() error
                Status() (string, error)
-               Restore(backupPath, instance, backupID string) error
+               Restore(backupPath, instance, backupID string, threadsNum 
uint8) error
                ShowBackupList(backupPath, instanceName string) 
([]*model.Backup, error)
                Auth(user, password, dbName string, dbPort uint16) error
                CheckSchema(user, password, dbName string, dbPort uint16, 
schema string) error
@@ -78,7 +78,7 @@ const (
        _backupFmt    = "gs_probackup backup --backup-path=%s --instance=%s 
--backup-mode=%s --pgdata=%s --threads=%d --pgport %d 2>&1"
        _showFmt      = "gs_probackup show --instance=%s --backup-path=%s 
--backup-id=%s --format=json 2>&1"
        _delBackupFmt = "gs_probackup delete --backup-path=%s --instance=%s 
--backup-id=%s 2>&1"
-       _restoreFmt   = "gs_probackup restore --backup-path=%s --instance=%s 
--backup-id=%s --pgdata=%s 2>&1"
+       _restoreFmt   = "gs_probackup restore --backup-path=%s --instance=%s 
--backup-id=%s --pgdata=%s --threads=%d 2>&1"
 
        _initFmt  = "gs_probackup init --backup-path=%s 2>&1"
        _rmDirFmt = "rm -r %s"
@@ -277,8 +277,8 @@ func (og *openGauss) Status() (string, error) {
 }
 
 // Restore TODO:Dependent environments require integration testing
-func (og *openGauss) Restore(backupPath, instance, backupID string) error {
-       cmd := fmt.Sprintf(_restoreFmt, backupPath, instance, backupID, 
og.pgData)
+func (og *openGauss) Restore(backupPath, instance, backupID string, threadsNum 
uint8) error {
+       cmd := fmt.Sprintf(_restoreFmt, backupPath, instance, backupID, 
og.pgData, threadsNum)
        outputs, err := cmds.AsyncExec(og.shell, cmd)
        for output := range outputs {
                og.log.
diff --git a/pitr/cli/internal/cmd/restore.go b/pitr/cli/internal/cmd/restore.go
index 791a043..3289f3d 100644
--- a/pitr/cli/internal/cmd/restore.go
+++ b/pitr/cli/internal/cmd/restore.go
@@ -68,7 +68,6 @@ var RestoreCmd = &cobra.Command{
 //nolint:dupl
 func init() {
        RootCmd.AddCommand(RestoreCmd)
-
        RestoreCmd.Flags().StringVarP(&Host, "host", "H", "", "ss-proxy 
hostname or ip")
        _ = RestoreCmd.MarkFlagRequired("host")
        RestoreCmd.Flags().Uint16VarP(&Port, "port", "P", 0, "ss-proxy port")
@@ -82,6 +81,7 @@ func init() {
        RestoreCmd.Flags().Uint16VarP(&AgentPort, "agent-port", "a", 443, 
"agent server port")
        _ = RestoreCmd.MarkFlagRequired("agent-port")
 
+       RestoreCmd.Flags().Uint8VarP(&ThreadsNum, "dn-threads-num", "j", 1, 
"openGauss data restore threads nums")
        RestoreCmd.Flags().StringVarP(&CSN, "csn", "", "", "commit sequence 
number")
        RestoreCmd.Flags().StringVarP(&RecordID, "id", "", "", "backup record 
id")
 }
@@ -247,6 +247,7 @@ func doRestore(as pkg.IAgentServer, sn *model.StorageNode, 
backupID string, resu
                Instance:     defaultInstance,
                DnBackupPath: BackupPath,
                DnBackupID:   backupID,
+               DnThreadsNum: ThreadsNum,
        }
 
        pw.AppendTracker(tracker)
diff --git a/pitr/cli/internal/pkg/model/as_restore.go 
b/pitr/cli/internal/pkg/model/as_restore.go
index bc399db..83f49a1 100644
--- a/pitr/cli/internal/pkg/model/as_restore.go
+++ b/pitr/cli/internal/pkg/model/as_restore.go
@@ -26,6 +26,7 @@ type (
                Instance     string `json:"instance"`
                DnBackupPath string `json:"dn_backup_path"`
                DnBackupID   string `json:"dn_backup_id"`
+               DnThreadsNum uint8  `json:"dn_threads_num"`
        }
 
        RestoreResp struct {

Reply via email to