You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by mi...@apache.org on 2023/05/04 07:33:18 UTC
[shardingsphere-on-cloud] branch main updated: feat(pitr): agent helath check support schema
This is an automated email from the ASF dual-hosted git repository.
miaoliyao 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 f7509f1 feat(pitr): agent helath check support schema
new 327b71e Merge pull request #334 from Xu-Wentao/pitr
f7509f1 is described below
commit f7509f16401591ac28e62ac87f410e1895d94381
Author: xuwentao <cu...@yahoo.com>
AuthorDate: Thu May 4 15:09:50 2023 +0800
feat(pitr): agent helath check support schema
---
pitr/agent/internal/handler/healthcheck.go | 7 +++++++
pitr/agent/internal/handler/view/healthcheck.go | 1 +
pitr/agent/internal/pkg/mocks/opengauss.go | 14 ++++++++++++++
pitr/agent/internal/pkg/opengauss.go | 14 ++++++++++++++
pitr/agent/pkg/gsutil/conn.go | 8 ++++++++
5 files changed, 44 insertions(+)
diff --git a/pitr/agent/internal/handler/healthcheck.go b/pitr/agent/internal/handler/healthcheck.go
index 877adc0..b2b2973 100644
--- a/pitr/agent/internal/handler/healthcheck.go
+++ b/pitr/agent/internal/handler/healthcheck.go
@@ -38,5 +38,12 @@ func HealthCheck(ctx *fiber.Ctx) error {
return fmt.Errorf(efmt, in.Username, len(in.Password), in.DBName, err)
}
+ // check schema if needed
+ if in.Schema != "" {
+ if err := pkg.OG.CheckSchema(in.Username, in.Password, in.DBName, in.DBPort, in.Schema); err != nil {
+ return fmt.Errorf("pkg.OG.CheckSchema return err=%s,wrap=%w", err, err)
+ }
+ }
+
return responder.Success(ctx, "")
}
diff --git a/pitr/agent/internal/handler/view/healthcheck.go b/pitr/agent/internal/handler/view/healthcheck.go
index f214fa0..d2e9211 100644
--- a/pitr/agent/internal/handler/view/healthcheck.go
+++ b/pitr/agent/internal/handler/view/healthcheck.go
@@ -22,4 +22,5 @@ type HealthCheckIn struct {
DBName string `json:"db_name"`
Username string `json:"username"`
Password string `json:"password"`
+ Schema string `json:"schema"`
}
diff --git a/pitr/agent/internal/pkg/mocks/opengauss.go b/pitr/agent/internal/pkg/mocks/opengauss.go
index 9b8f95f..256ad75 100644
--- a/pitr/agent/internal/pkg/mocks/opengauss.go
+++ b/pitr/agent/internal/pkg/mocks/opengauss.go
@@ -77,6 +77,20 @@ func (mr *MockIOpenGaussMockRecorder) Auth(user, password, dbName, dbPort interf
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Auth", reflect.TypeOf((*MockIOpenGauss)(nil).Auth), user, password, dbName, dbPort)
}
+// 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, "CheckSchema", user, password, dbName, dbPort, schema)
+ 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 {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckSchema", reflect.TypeOf((*MockIOpenGauss)(nil).CheckSchema), user, password, dbName, dbPort, schema)
+}
+
// CleanPgDataTemp mocks base method.
func (m *MockIOpenGauss) CleanPgDataTemp() error {
m.ctrl.T.Helper()
diff --git a/pitr/agent/internal/pkg/opengauss.go b/pitr/agent/internal/pkg/opengauss.go
index 9d463e2..7bf84bd 100644
--- a/pitr/agent/internal/pkg/opengauss.go
+++ b/pitr/agent/internal/pkg/opengauss.go
@@ -52,6 +52,7 @@ type (
Restore(backupPath, instance, backupID string) 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
MvTempToPgData() error
MvPgDataToTemp() error
CleanPgDataTemp() error
@@ -362,6 +363,7 @@ func (og *openGauss) Auth(user, password, dbName string, dbPort uint16) error {
if err := _og.Ping(); err != nil {
return fmt.Errorf("ping openGauss fail[user=%s,pw length=%d,dbName=%s],err=%w", user, len(password), dbName, err)
}
+
return nil
}
@@ -401,3 +403,15 @@ func (og *openGauss) CleanPgDataTemp() error {
}
return nil
}
+
+func (og *openGauss) CheckSchema(user, password, dbName string, dbPort uint16, schema string) error {
+ _og, err := gsutil.Open(user, password, dbName, dbPort)
+ if err != nil {
+ return fmt.Errorf("gsutil.Open failure,err=%w", err)
+ }
+
+ if err := _og.CheckSchema(schema); err != nil {
+ return fmt.Errorf("check openGauss schema fail[user=%s,dbName=%s, schema=%s],err=%w", user, dbName, schema, err)
+ }
+ return nil
+}
diff --git a/pitr/agent/pkg/gsutil/conn.go b/pitr/agent/pkg/gsutil/conn.go
index a5bca1d..70308df 100644
--- a/pitr/agent/pkg/gsutil/conn.go
+++ b/pitr/agent/pkg/gsutil/conn.go
@@ -68,3 +68,11 @@ func (og *OpenGauss) Ping() error {
}
return og.db.Close()
}
+
+func (og *OpenGauss) CheckSchema(s string) error {
+ _, err := og.db.Exec(s)
+ if err != nil {
+ return err
+ }
+ return og.db.Close()
+}