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 3528329  chore(agent): add debug log (#240)
3528329 is described below

commit 3528329b4645d28d934e3e4adde071a3a7fa0c80
Author: lltgo <[email protected]>
AuthorDate: Fri Mar 3 16:24:42 2023 +0800

    chore(agent): add debug log (#240)
---
 pitr/agent/internal/pkg/opengauss.go      | 69 ++++++++++++++++++++++---------
 pitr/agent/internal/pkg/opengauss_test.go |  6 +++
 pitr/agent/internal/pkg/pkg.go            |  6 ++-
 pitr/agent/internal/pkg/pkg_test.go       | 21 ++++++++++
 pitr/agent/main.go                        |  2 +-
 5 files changed, 82 insertions(+), 22 deletions(-)

diff --git a/pitr/agent/internal/pkg/opengauss.go 
b/pitr/agent/internal/pkg/opengauss.go
index 1c20800..8f6c0b2 100644
--- a/pitr/agent/internal/pkg/opengauss.go
+++ b/pitr/agent/internal/pkg/opengauss.go
@@ -22,6 +22,7 @@ import (
        "errors"
        "fmt"
        "github.com/apache/shardingsphere-on-cloud/pitr/agent/pkg/gsutil"
+       "github.com/apache/shardingsphere-on-cloud/pitr/agent/pkg/logging"
        "strings"
 
        "github.com/dlclark/regexp2"
@@ -36,6 +37,7 @@ type (
                shell      string
                pgData     string
                pgDataTemp string
+               log        logging.ILog
        }
 
        IOpenGauss interface {
@@ -56,7 +58,7 @@ type (
        }
 )
 
-func NewOpenGauss(shell, pgData string) IOpenGauss {
+func NewOpenGauss(shell, pgData string, log logging.ILog) IOpenGauss {
        dirs := strings.Split(pgData, "/")
        dirs = append(dirs[0:len(dirs)-1], "temp")
 
@@ -64,6 +66,7 @@ func NewOpenGauss(shell, pgData string) IOpenGauss {
                shell:      shell,
                pgData:     pgData,
                pgDataTemp: strings.Join(dirs, "/"),
+               log:        log,
        }
 }
 
@@ -96,6 +99,13 @@ func (og *openGauss) AsyncBackup(backupPath, instanceName, 
backupMode string, th
        }
 
        for output := range outputs {
+               og.log.
+                       Field("backup_path", backupPath).
+                       Field("instance", instanceName).
+                       Field("backup_mode", backupMode).
+                       Field("pgdata", og.pgData).
+                       Debug(fmt.Sprintf("AsyncBackup 
output[lineNo=%d,msg=%s,err=%v]", output.LineNo, output.Message, output.Error))
+
                if output.Error != nil {
                        return "", fmt.Errorf("output.Error[%w] is not nil", 
output.Error)
                }
@@ -148,8 +158,10 @@ func (og *openGauss) delBackup(backupPath, instanceName, 
backupID string) error
 
 func (og *openGauss) Init(backupPath string) error {
        cmd := fmt.Sprintf(_initFmt, backupPath)
-       _, err := cmds.Exec(og.shell, cmd)
-       // already exist and it's not empty
+
+       output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("Init output[msg=%s,err=%v]", output, err))
+
        if errors.Is(err, cons.CmdOperateFailed) {
                return fmt.Errorf("init backup path failure,err=%s,wrap=%w", 
err, cons.BackupPathAlreadyExist)
        }
@@ -173,9 +185,12 @@ func (og *openGauss) deinit(backupPath string) error {
 
 func (og *openGauss) AddInstance(backupPath, instance string) error {
        cmd := fmt.Sprintf(_addInstanceFmt, backupPath, instance, og.pgData)
-       _, err := cmds.Exec(og.shell, cmd)
+
+       output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("AddInstance[output=%s,err=%v]", output, err))
+
        if errors.Is(err, cons.CmdOperateFailed) {
-               return fmt.Errorf("add instance failure,err=%s,wrap=%w", err, 
cons.InstanceAlreadyExist)
+               return fmt.Errorf("add instance 
failure[output=%s],err=%s,wrap=%w", output, err, cons.InstanceAlreadyExist)
        }
        if err != nil {
                return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s] return err=%w", 
og.shell, cmd, err)
@@ -185,10 +200,11 @@ func (og *openGauss) AddInstance(backupPath, instance 
string) error {
 
 func (og *openGauss) DelInstance(backupPath, instancee string) error {
        cmd := fmt.Sprintf(_delInstanceFmt, backupPath, instancee)
-       _, err := cmds.Exec(og.shell, cmd)
-       // already exist and it's not empty
+       output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("DelInstance[output=%s,err=%v]", output, err))
+
        if errors.Is(err, cons.CmdOperateFailed) {
-               return fmt.Errorf("delte instance failure,err=%s,wrap=%w", err, 
cons.InstanceNotExist)
+               return fmt.Errorf("delete instance 
failure[output=%s],err=%s,wrap=%w", output, err, cons.InstanceNotExist)
        }
        if err != nil {
                return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s] return err=%w", 
og.shell, cmd, err)
@@ -198,25 +214,31 @@ func (og *openGauss) DelInstance(backupPath, instancee 
string) error {
 
 func (og *openGauss) Start() error {
        cmd := fmt.Sprintf(_startOpenGaussFmt, og.pgData)
-       _, err := cmds.Exec(og.shell, cmd)
+       output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("Start openGauss[output=%s]", output))
+
        if errors.Is(err, cons.CmdOperateFailed) {
-               return fmt.Errorf("start openGauss failure,err=%s,wrap=%w", 
err, cons.StartOpenGaussFailed)
+               return fmt.Errorf("start openGauss 
failure[output=%s],err=%s,wrap=%w", output, err, cons.StartOpenGaussFailed)
        }
        if err != nil {
-               return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s] return err=%w", 
og.shell, cmd, err)
+               return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s,output=%s] return 
err=%w", og.shell, cmd, output, err)
        }
+
        return nil
 }
 
 func (og *openGauss) Stop() error {
        cmd := fmt.Sprintf(_stopOpenGaussFmt, og.pgData)
-       _, err := cmds.Exec(og.shell, cmd)
+       output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("Stop openGauss[output=%s]", output))
+
        if errors.Is(err, cons.CmdOperateFailed) {
-               return fmt.Errorf("stop openGauss failure,err=%s,wrap=%w", err, 
cons.StopOpenGaussFailed)
+               return fmt.Errorf("stop openGauss 
failure[output=%s],err=%s,wrap=%w", output, err, cons.StopOpenGaussFailed)
        }
        if err != nil {
-               return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s] return err=%w", 
og.shell, cmd, err)
+               return fmt.Errorf("cmds.Exec[shell=%s,cmd=%s,output=%s] return 
err=%w", og.shell, cmd, output, err)
        }
+
        return nil
 }
 
@@ -231,14 +253,16 @@ The others are abnormal states,return "" and error.
 func (og *openGauss) Status() (string, error) {
        cmd := fmt.Sprintf(_statusGaussFmt, og.pgData)
        output, err := cmds.Exec(og.shell, cmd)
+       og.log.Debug(fmt.Sprintf("Status openGauss[output=%s]", output))
+
        if errors.Is(err, cons.CmdOperateFailed) {
                if strings.Contains(err.Error(), "no server running") {
                        return "Stopped", nil
                }
-               return "", fmt.Errorf("get openGauss status 
failure,err=[%s],wrap=%w", err, cons.StopOpenGaussFailed)
+               return "", fmt.Errorf("get openGauss status 
failure[output=%s],err=[%s],wrap=%w", output, err, cons.StopOpenGaussFailed)
        }
        if err != nil {
-               return "", fmt.Errorf("cmds.Exec[shell=%s,cmd=%s] return 
err=%w", og.shell, cmd, err)
+               return "", fmt.Errorf("cmds.Exec[shell=%s,cmd=%s,output=%s] 
return err=%w", og.shell, cmd, output, err)
        }
 
        if strings.Contains(output, "server is running") {
@@ -252,13 +276,20 @@ func (og *openGauss) Status() (string, error) {
 func (og *openGauss) Restore(backupPath, instance, backupID string) error {
        cmd := fmt.Sprintf(_restoreFmt, backupPath, instance, backupID, 
og.pgData)
        outputs, err := cmds.AsyncExec(og.shell, cmd)
-
        for output := range outputs {
+               og.log.
+                       Fields(map[logging.FieldKey]string{
+                               "backup_path": backupPath,
+                               "instance":    instance,
+                               "backup_id":   backupID,
+                       }).
+                       Debug(fmt.Sprintf("Restore 
openGauss[lineNo=%d,msg=%s]", output.LineNo, output.Message))
+
                if errors.Is(err, cons.CmdOperateFailed) {
-                       return fmt.Errorf("outputs get err=%s,wrap=%w", 
output.Error, cons.RestoreFailed)
+                       return fmt.Errorf("cmds.AsyncExec[output=%s] return 
err=%s,wrap=%w", output.Message, output.Error, cons.RestoreFailed)
                }
                if output.Error != nil {
-                       return fmt.Errorf("output.Error[%s] is not 
nil,wrap=%w", output.Error, cons.RestoreFailed)
+                       return fmt.Errorf("cmds.AsyncExec outputs:Error[%s] is 
not nil,wrap=%w", output.Error, cons.RestoreFailed)
                }
        }
        return nil
diff --git a/pitr/agent/internal/pkg/opengauss_test.go 
b/pitr/agent/internal/pkg/opengauss_test.go
index afea562..ac51154 100644
--- a/pitr/agent/internal/pkg/opengauss_test.go
+++ b/pitr/agent/internal/pkg/opengauss_test.go
@@ -36,6 +36,7 @@ var _ = Describe("OpenGauss,requires opengauss environment", 
func() {
                        og := &openGauss{
                                shell:  "/bin/sh",
                                pgData: 
"/data/opengauss/3.1.1/data/single_node/",
+                               log:    log,
                        }
 
                        var (
@@ -85,6 +86,7 @@ var _ = Describe("OpenGauss,requires opengauss environment", 
func() {
                It("Init backup and clean up the env", func() {
                        og := &openGauss{
                                shell: "/bin/sh",
+                               log:   log,
                        }
 
                        data2 := "/home/omm/data2"
@@ -110,6 +112,7 @@ var _ = Describe("OpenGauss,requires opengauss 
environment", func() {
                It("[/home/omm/]:no permission to operate other dirs", func() {
                        og := &openGauss{
                                shell: "/bin/sh",
+                               log:   log,
                        }
 
                        data := "/home/omm2/data"
@@ -124,6 +127,7 @@ var _ = Describe("OpenGauss,requires opengauss 
environment", func() {
                        og := &openGauss{
                                shell:  "/bin/sh",
                                pgData: 
"/data/opengauss/3.1.1/data/single_node/",
+                               log:    log,
                        }
 
                        var (
@@ -149,6 +153,7 @@ var _ = Describe("OpenGauss,requires opengauss 
environment", func() {
                        og := &openGauss{
                                shell:  "/bin/sh",
                                pgData: 
"/data/opengauss/3.1.1/data/single_node/",
+                               log:    log,
                        }
 
                        status, err := og.Status()
@@ -179,6 +184,7 @@ var _ = Describe("OpenGauss,requires opengauss 
environment", func() {
                It("manual:show all backup ", func() {
                        og := &openGauss{
                                shell: "/bin/sh",
+                               log:   log,
                        }
 
                        var (
diff --git a/pitr/agent/internal/pkg/pkg.go b/pitr/agent/internal/pkg/pkg.go
index 5e8f356..9f2bd1b 100644
--- a/pitr/agent/internal/pkg/pkg.go
+++ b/pitr/agent/internal/pkg/pkg.go
@@ -17,10 +17,12 @@
 
 package pkg
 
+import "github.com/apache/shardingsphere-on-cloud/pitr/agent/pkg/logging"
+
 var (
        OG IOpenGauss
 )
 
-func Init(shell, pgData string) {
-       OG = NewOpenGauss(shell, pgData)
+func Init(shell, pgData string, log logging.ILog) {
+       OG = NewOpenGauss(shell, pgData, log)
 }
diff --git a/pitr/agent/internal/pkg/pkg_test.go 
b/pitr/agent/internal/pkg/pkg_test.go
index 4085223..d42e6fd 100644
--- a/pitr/agent/internal/pkg/pkg_test.go
+++ b/pitr/agent/internal/pkg/pkg_test.go
@@ -18,12 +18,33 @@
 package pkg
 
 import (
+       "fmt"
+       "github.com/apache/shardingsphere-on-cloud/pitr/agent/pkg/logging"
+       "go.uber.org/zap"
+       "go.uber.org/zap/zapcore"
        "testing"
 
        . "github.com/onsi/ginkgo/v2"
        . "github.com/onsi/gomega"
 )
 
+var log logging.ILog
+
+func init() {
+       prodConfig := zap.NewProductionConfig()
+       prodConfig.EncoderConfig.EncodeTime = zapcore.RFC3339TimeEncoder
+       prodConfig.Level = zap.NewAtomicLevelAt(zapcore.DebugLevel)
+       logger, err := prodConfig.Build(
+               zap.AddCallerSkip(1),
+               zap.AddStacktrace(zapcore.FatalLevel),
+       )
+       if err != nil {
+               panic(fmt.Errorf("an unknown error occured in the zap-log"))
+       }
+
+       log = logging.Init(logger)
+}
+
 func TestPkg(t *testing.T) {
        RegisterFailHandler(Fail)
        RunSpecs(t, "Pkg suit")
diff --git a/pitr/agent/main.go b/pitr/agent/main.go
index 011b6ef..2730fc4 100644
--- a/pitr/agent/main.go
+++ b/pitr/agent/main.go
@@ -83,7 +83,6 @@ func main() {
                dirs = dirs[0 : len(dirs)-1]
                pgData = strings.Join(dirs, "/")
        }
-       pkg.Init(shell, pgData)
 
        if strings.Trim(tlsCrt, " ") == "" || strings.Trim(tlsKey, " ") == "" {
                panic(fmt.Errorf("lack of HTTPs certificate"))
@@ -106,6 +105,7 @@ func main() {
        }
 
        log = logging.Init(logger)
+       pkg.Init(shell, pgData, log)
        app = fiber.New()
 
        go func() {

Reply via email to