You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by dj...@apache.org on 2026/09/02 01:58:45 UTC
(cloudberry-backup) 14/40: Bump Go version from 1.21 to 1.24.
This is an automated email from the ASF dual-hosted git repository.
tuhaihe pushed a commit to branch REL_2_STABLE
in repository https://gitbox.apache.org/repos/asf/cloudberry-backup.git
commit 04ecda5eebee7cc17ce210afbe0e7c493af0b565
Author: woblerr <an...@gmail.com>
AuthorDate: Tue Apr 7 11:43:18 2026 +0300
Bump Go version from 1.21 to 1.24.
Update Go to 1.24.
Fix non-constant format string errors for Go 1.24.
Fix patterns applied:
- func(err.Error()) -> func("%s", err.Error())
- func(fmt.Sprintf("...", args)) -> func("...", args)
---
backup/backup.go | 14 +++++++-------
backup/data.go | 2 +-
backup/incremental.go | 6 +++---
backup/predata_functions.go | 8 ++++----
backup/queries_acl.go | 2 +-
backup/wrappers.go | 4 ++--
go.mod | 2 +-
plugins/s3plugin/backup.go | 2 +-
plugins/s3plugin/restore.go | 6 +++---
plugins/s3plugin/s3plugin.go | 2 +-
report/report.go | 6 +++---
restore/data.go | 10 +++++-----
restore/restore.go | 4 ++--
restore/validate.go | 4 ++--
restore/wrappers.go | 4 ++--
utils/gpexpand_sensor.go | 9 ++++-----
utils/io.go | 4 ++--
utils/plugin.go | 12 ++++++------
utils/util.go | 2 +-
19 files changed, 51 insertions(+), 52 deletions(-)
diff --git a/backup/backup.go b/backup/backup.go
index 0c8249ac..2711f83c 100644
--- a/backup/backup.go
+++ b/backup/backup.go
@@ -387,7 +387,7 @@ func DoTeardown() {
if err := recover(); err != nil {
// gplog's Fatal will cause a panic with error code 2
if gplog.GetErrorCode() != 2 {
- gplog.Error(fmt.Sprintf("%v: %s", err, debug.Stack()))
+ gplog.Error("%v: %s", err, debug.Stack())
gplog.SetErrorCode(2)
} else {
errStr = fmt.Sprintf("%v", err)
@@ -448,12 +448,12 @@ func DoTeardown() {
if pluginConfig != nil {
err = pluginConfig.BackupFile(configFilename)
if err != nil {
- gplog.Error(fmt.Sprintf("%v", err))
+ gplog.Error("%v", err)
return
}
err = pluginConfig.BackupFile(reportFilename)
if err != nil {
- gplog.Error(fmt.Sprintf("%v", err))
+ gplog.Error("%v", err)
return
}
}
@@ -499,7 +499,7 @@ func DoCleanup(backupFailed bool) {
if wasTerminated {
err := utils.CheckAgentErrorsOnSegments(globalCluster, globalFPInfo)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
}
}
}
@@ -519,12 +519,12 @@ func DoCleanup(backupFailed bool) {
historyDBName := globalFPInfo.GetBackupHistoryDatabasePath()
historyDB, err := history.InitializeHistoryDatabase(historyDBName)
if err != nil {
- gplog.Error(fmt.Sprintf("Unable to update history database. Error: %v", err))
+ gplog.Error("Unable to update history database. Error: %v", err)
} else {
_, err := historyDB.Exec(fmt.Sprintf("UPDATE backups SET status='%s', end_time='%s' WHERE timestamp='%s'", statusString, backupReport.BackupConfig.EndTime, globalFPInfo.Timestamp))
historyDB.Close()
if err != nil {
- gplog.Error(fmt.Sprintf("Unable to update history database. Error: %v", err))
+ gplog.Error("Unable to update history database. Error: %v", err)
}
}
}
@@ -559,7 +559,7 @@ func cancelBlockedQueries(timestamp string) {
return
}
- gplog.Info(fmt.Sprintf("Canceling %d blocked queries", len(pids)))
+ gplog.Info("Canceling %d blocked queries", len(pids))
// Cancel all gpbackup queries waiting for a lock
for _, pid := range pids {
conn.MustExec(fmt.Sprintf("SELECT pg_cancel_backend(%d)", pid))
diff --git a/backup/data.go b/backup/data.go
index 85ee1de9..9d937bae 100644
--- a/backup/data.go
+++ b/backup/data.go
@@ -117,7 +117,7 @@ func BackupSingleTableData(table Table, rowsCopiedMap map[uint32]int64, counters
logMessage := fmt.Sprintf("%sWriting data for table %s to file", workerInfo, table.FQN())
// Avoid race condition by incrementing counters in call to sprintf
tableCount := fmt.Sprintf(" (table %d of %d)", atomic.AddInt64(&counters.NumRegTables, 1), counters.TotalRegTables)
- utils.LogProgress(logMessage + tableCount)
+ utils.LogProgress("%s", logMessage+tableCount)
destinationToWrite := ""
if MustGetFlagBool(options.SINGLE_DATA_FILE) {
diff --git a/backup/incremental.go b/backup/incremental.go
index 0326c940..dcf70619 100644
--- a/backup/incremental.go
+++ b/backup/incremental.go
@@ -86,7 +86,7 @@ func GetLatestMatchingBackupConfig(historyDBPath string, currentBackupConfig *hi
ORDER BY timestamp DESC`, whereClause)
timestampRows, err := historyDB.Query(getBackupTimetampsQuery)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
return nil
}
defer timestampRows.Close()
@@ -96,7 +96,7 @@ func GetLatestMatchingBackupConfig(historyDBPath string, currentBackupConfig *hi
var timestamp string
err = timestampRows.Scan(×tamp)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
return nil
}
timestamps = append(timestamps, timestamp)
@@ -105,7 +105,7 @@ func GetLatestMatchingBackupConfig(historyDBPath string, currentBackupConfig *hi
for _, ts := range timestamps {
backupConfig, err := history.GetBackupConfig(ts, historyDB)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
return nil
}
if !backupConfig.Failed() && matchesIncrementalFlags(backupConfig, currentBackupConfig) {
diff --git a/backup/predata_functions.go b/backup/predata_functions.go
index f7953932..9f6324ef 100644
--- a/backup/predata_functions.go
+++ b/backup/predata_functions.go
@@ -393,7 +393,7 @@ func PrintCreateTransformStatement(metadataFile *utils.FileWithByteCount, objToc
TypeFQN := fmt.Sprintf("%s.%s", transform.TypeNamespace, transform.TypeName)
if !fromSQLIsDefined && !toSQLIsDefined {
- gplog.Warn(fmt.Sprintf("Skipping invalid transform object for type %s and language %s; At least one of FROM and TO functions should be specified.", TypeFQN, transform.LanguageName))
+ gplog.Warn("Skipping invalid transform object for type %s and language %s; At least one of FROM and TO functions should be specified.", TypeFQN, transform.LanguageName)
return
}
start := metadataFile.ByteCount
@@ -401,7 +401,7 @@ func PrintCreateTransformStatement(metadataFile *utils.FileWithByteCount, objToc
if fromSQLIsDefined {
statement += fmt.Sprintf("FROM SQL WITH FUNCTION %s", fromSQLFunc.FQN())
} else {
- gplog.Warn(fmt.Sprintf("No FROM function found for transform object with type %s and language %s\n", TypeFQN, transform.LanguageName))
+ gplog.Warn("No FROM function found for transform object with type %s and language %s\n", TypeFQN, transform.LanguageName)
}
if toSQLIsDefined {
@@ -410,10 +410,10 @@ func PrintCreateTransformStatement(metadataFile *utils.FileWithByteCount, objToc
}
statement += fmt.Sprintf("TO SQL WITH FUNCTION %s", toSQLFunc.FQN())
} else {
- gplog.Warn(fmt.Sprintf("No TO function found for transform object with type %s and language %s\n", TypeFQN, transform.LanguageName))
+ gplog.Warn("No TO function found for transform object with type %s and language %s\n", TypeFQN, transform.LanguageName)
}
statement += ");"
- metadataFile.MustPrintf(statement)
+ metadataFile.MustPrintf("%s", statement)
section, entry := transform.GetMetadataEntry()
tier := globalTierMap[transform.GetUniqueID()]
objToc.AddMetadataEntry(section, entry, start, metadataFile.ByteCount, tier)
diff --git a/backup/queries_acl.go b/backup/queries_acl.go
index b47a4be7..11d02b6b 100644
--- a/backup/queries_acl.go
+++ b/backup/queries_acl.go
@@ -138,7 +138,7 @@ type MetadataQueryStruct struct {
}
func GetMetadataForObjectType(connectionPool *dbconn.DBConn, params MetadataQueryParams) MetadataMap {
- gplog.Verbose("Getting object type metadata from " + params.CatalogTable)
+ gplog.Verbose("Getting object type metadata from %s", params.CatalogTable)
tableName := params.CatalogTable
nameCol := "''"
diff --git a/backup/wrappers.go b/backup/wrappers.go
index c32df413..284348cd 100644
--- a/backup/wrappers.go
+++ b/backup/wrappers.go
@@ -63,7 +63,7 @@ func initializeConnectionPool(timestamp string) {
numConns = 2
}
- gplog.Verbose(fmt.Sprintf("Initializing %d database connections", numConns))
+ gplog.Verbose("Initializing %d database connections", numConns)
connectionPool.MustConnect(numConns)
utils.ValidateGPDBVersionCompatibility(connectionPool)
@@ -183,7 +183,7 @@ func createBackupLockFile(timestamp string) {
gplog.FatalOnError(err)
err = backupLockFile.TryLock()
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
gplog.Fatal(errors.Errorf("A backup with timestamp %s is already in progress. Wait 1 second and try the backup again.", timestamp), "")
}
}
diff --git a/go.mod b/go.mod
index 3adaf23e..cec552ff 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module github.com/apache/cloudberry-backup
-go 1.21
+go 1.24.0
require (
github.com/DATA-DOG/go-sqlmock v1.5.0
diff --git a/plugins/s3plugin/backup.go b/plugins/s3plugin/backup.go
index a2fcbea5..0a7d0c50 100644
--- a/plugins/s3plugin/backup.go
+++ b/plugins/s3plugin/backup.go
@@ -155,7 +155,7 @@ func BackupDirectoryParallel(c *cli.Context) error {
totalBytes += bytes
msg := fmt.Sprintf("Uploaded %d bytes for %s in %v", bytes,
filepath.Base(fileKey), elapsed.Round(time.Millisecond))
- gplog.Verbose(msg)
+ gplog.Verbose("%s", msg)
fmt.Println(msg)
} else {
finalErr = err
diff --git a/plugins/s3plugin/restore.go b/plugins/s3plugin/restore.go
index b7f31f23..deb3cc98 100644
--- a/plugins/s3plugin/restore.go
+++ b/plugins/s3plugin/restore.go
@@ -44,7 +44,7 @@ func RestoreFile(c *cli.Context) error {
if err != nil {
fileErr := os.Remove(fileName)
if fileErr != nil {
- gplog.Error(fileErr.Error())
+ gplog.Error("%s", fileErr.Error())
}
return err
}
@@ -95,7 +95,7 @@ func RestoreDirectory(c *cli.Context) error {
if err != nil {
fileErr := os.Remove(filename)
if fileErr != nil {
- gplog.Error(fileErr.Error())
+ gplog.Error("%s", fileErr.Error())
}
return err
}
@@ -175,7 +175,7 @@ func RestoreDirectoryParallel(c *cli.Context) error {
numFiles++
msg := fmt.Sprintf("Downloaded %d bytes for %s in %v", bytes,
filepath.Base(fileKey), elapsed.Round(time.Millisecond))
- gplog.Verbose(msg)
+ gplog.Verbose("%s", msg)
fmt.Println(msg)
} else {
finalErr = err
diff --git a/plugins/s3plugin/s3plugin.go b/plugins/s3plugin/s3plugin.go
index 92f0e080..9a2a4e83 100644
--- a/plugins/s3plugin/s3plugin.go
+++ b/plugins/s3plugin/s3plugin.go
@@ -336,7 +336,7 @@ func DeleteBackup(c *cli.Context) error {
if !IsValidTimestamp(timestamp) {
msg := fmt.Sprintf("delete requires a <timestamp> with format "+
"YYYYMMDDHHMMSS, but received: %s", timestamp)
- return fmt.Errorf(msg)
+ return fmt.Errorf("%s", msg)
}
date := timestamp[0:8]
diff --git a/report/report.go b/report/report.go
index 0b3a2153..d50ad9e5 100644
--- a/report/report.go
+++ b/report/report.go
@@ -236,9 +236,9 @@ func logOutputReport(reportFile io.WriteCloser, reportInfo []LineInfo) {
for _, lineInfo := range reportInfo {
if lineInfo.Key == "" {
- utils.MustPrintf(reportFile, fmt.Sprintf("\n"))
+ utils.MustPrintf(reportFile, "\n")
} else {
- utils.MustPrintf(reportFile, fmt.Sprintf("%-*s%s\n", maxSize+3, lineInfo.Key, lineInfo.Value))
+ utils.MustPrintf(reportFile, "%-*s%s\n", maxSize+3, lineInfo.Key, lineInfo.Value)
}
}
}
@@ -279,7 +279,7 @@ func PrintObjectCounts(reportFile io.WriteCloser, objectCounts map[string]int) {
objectStr += fmt.Sprintf("%-*s%d\n", maxSize+3, strings.ToLower(object), objectCounts[object])
}
}
- utils.MustPrintf(reportFile, objectStr)
+ utils.MustPrintf(reportFile, "%s", objectStr)
}
/*
diff --git a/restore/data.go b/restore/data.go
index ee073379..11d2deea 100644
--- a/restore/data.go
+++ b/restore/data.go
@@ -111,7 +111,7 @@ func restoreSingleTableData(fpInfo *filepath.FilePathInfo, entry toc.Coordinator
partialRowsRestored, copyErr := CopyTableIn(connectionPool, tableName, entry.AttributeString, destinationToRead, backupConfig.SingleDataFile, whichConn)
if copyErr != nil {
- gplog.Error(copyErr.Error())
+ gplog.Error("%s", copyErr.Error())
if MustGetFlagBool(options.ON_ERROR_CONTINUE) {
if ((connectionPool.Version.IsGPDB() && connectionPool.Version.AtLeast("6")) || connectionPool.Version.IsCBDB()) && backupConfig.SingleDataFile {
// inform segment helpers to skip this entry
@@ -149,7 +149,7 @@ func restoreSingleTableData(fpInfo *filepath.FilePathInfo, entry toc.Coordinator
// The subsequent division in gprestore leads to a miscalculated row count, causing this check to fail.
err := CheckRowsRestored(numRowsRestored, numRowsBackedUp, tableName)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
return err
}
@@ -158,12 +158,12 @@ func restoreSingleTableData(fpInfo *filepath.FilePathInfo, entry toc.Coordinator
if entry.IsReplicated && (origSize < destSize) {
err := ExpandReplicatedTable(origSize, tableName, whichConn)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
}
} else {
err := RedistributeTableData(tableName, whichConn)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
}
}
}
@@ -294,7 +294,7 @@ func restoreDataFromTimestamp(fpInfo filepath.FilePathInfo, dataEntries []toc.Co
gplog.Verbose("Truncating table %s prior to restoring data", tableName)
_, err := connectionPool.Exec(`TRUNCATE `+tableName, whichConn)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
}
}
if err == nil {
diff --git a/restore/restore.go b/restore/restore.go
index c91d0ec1..91c6c5ab 100644
--- a/restore/restore.go
+++ b/restore/restore.go
@@ -612,7 +612,7 @@ func DoTeardown() {
if err := recover(); err != nil {
// Check if gplog.Fatal did not cause the panic
if gplog.GetErrorCode() != 2 {
- gplog.Error(fmt.Sprintf("%v: %s", err, debug.Stack()))
+ gplog.Error("%v: %s", err, debug.Stack())
gplog.SetErrorCode(2)
} else {
errStr = fmt.Sprintf("%+v", err)
@@ -733,7 +733,7 @@ func DoCleanup(restoreFailed bool) {
if wasTerminated {
err := utils.CheckAgentErrorsOnSegments(globalCluster, globalFPInfo)
if err != nil {
- gplog.Error(err.Error())
+ gplog.Error("%s", err.Error())
}
}
}
diff --git a/restore/validate.go b/restore/validate.go
index be0ee281..f9fb55fb 100644
--- a/restore/validate.go
+++ b/restore/validate.go
@@ -138,7 +138,7 @@ WHERE quote_ident(n.nspname) || '.' || quote_ident(c.relname) IN (%s)`, quotedTa
errMsg = fmt.Sprintf("Relation %s already exists", relationsInDB[0])
}
if errMsg != "" {
- gplog.Fatal(nil, errMsg)
+ gplog.Fatal(nil, "%s", errMsg)
}
}
@@ -147,7 +147,7 @@ func ValidateRedirectSchema(connectionPool *dbconn.DBConn, redirectSchema string
schemaInDB := dbconn.MustSelectStringSlice(connectionPool, query)
if len(schemaInDB) == 0 {
- gplog.Fatal(nil, fmt.Sprintf("Schema %s to redirect into does not exist", redirectSchema))
+ gplog.Fatal(nil, "Schema %s to redirect into does not exist", redirectSchema)
}
}
diff --git a/restore/wrappers.go b/restore/wrappers.go
index 73d7e22c..ceafeb25 100644
--- a/restore/wrappers.go
+++ b/restore/wrappers.go
@@ -366,10 +366,10 @@ func RestoreSchemas(schemaStatements []toc.StatementWithType, progressBar utils.
} else {
errMsg := fmt.Sprintf("Error encountered while creating schema %s", schema.Name)
if MustGetFlagBool(options.ON_ERROR_CONTINUE) {
- gplog.Verbose(fmt.Sprintf("%s: %s", errMsg, err.Error()))
+ gplog.Verbose("%s: %s", errMsg, err.Error())
numErrors++
} else {
- gplog.Fatal(err, errMsg)
+ gplog.Fatal(err, "%s", errMsg)
}
}
}
diff --git a/utils/gpexpand_sensor.go b/utils/gpexpand_sensor.go
index 8ca83676..0d0d4655 100644
--- a/utils/gpexpand_sensor.go
+++ b/utils/gpexpand_sensor.go
@@ -1,7 +1,6 @@
package utils
import (
- "fmt"
"os"
"path/filepath"
@@ -54,12 +53,12 @@ func NewGpexpandSensor(myfs vfs.Filesystem, conn *dbconn.DBConn) GpexpandSensor
func (sensor GpexpandSensor) IsGpexpandRunning() (bool, error) {
err := validateConnection(sensor.postgresConn)
if err != nil {
- gplog.Error(fmt.Sprintf("Error encountered validating db connection: %v", err))
+ gplog.Error("Error encountered validating db connection: %v", err)
return false, err
}
coordinatorDataDir, err := dbconn.SelectString(sensor.postgresConn, CoordinatorDataDirQuery)
if err != nil {
- gplog.Error(fmt.Sprintf("Error encountered retrieving data directory: %v", err))
+ gplog.Error("Error encountered retrieving data directory: %v", err)
return false, err
}
@@ -76,7 +75,7 @@ func (sensor GpexpandSensor) IsGpexpandRunning() (bool, error) {
var tableName string
tableName, err = dbconn.SelectString(sensor.postgresConn, GpexpandStatusTableExistsQuery)
if err != nil {
- gplog.Error(fmt.Sprintf("Error encountered retrieving gpexpand status: %v", err))
+ gplog.Error("Error encountered retrieving gpexpand status: %v", err)
return false, err
}
if len(tableName) <= 0 {
@@ -87,7 +86,7 @@ func (sensor GpexpandSensor) IsGpexpandRunning() (bool, error) {
var status string
status, err = dbconn.SelectString(sensor.postgresConn, GpexpandTemporaryTableStatusQuery)
if err != nil {
- gplog.Error(fmt.Sprintf("Error encountered retrieving gpexpand status: %v", err))
+ gplog.Error("Error encountered retrieving gpexpand status: %v", err)
return false, err
}
diff --git a/utils/io.go b/utils/io.go
index 0985d588..a425b9c2 100644
--- a/utils/io.go
+++ b/utils/io.go
@@ -92,11 +92,11 @@ func CopyFile(src, dest string) error {
var content []byte
content, err = ioutil.ReadFile(src)
if err != nil {
- gplog.Error(fmt.Sprintf("Error: %v, encountered when reading file: %s", err, src))
+ gplog.Error("Error: %v, encountered when reading file: %s", err, src)
return err
}
return ioutil.WriteFile(dest, content, info.Mode())
}
- gplog.Error(fmt.Sprintf("Error: %v, encountered when trying to stat file: %s", err, src))
+ gplog.Error("Error: %v, encountered when trying to stat file: %s", err, src)
return err
}
diff --git a/utils/plugin.go b/utils/plugin.go
index 212ee7db..e1e9b1a2 100644
--- a/utils/plugin.go
+++ b/utils/plugin.go
@@ -245,10 +245,10 @@ func (plugin *PluginConfig) executeHook(c *cluster.Cluster, verboseCommandMsg st
plugin.buildHookString(command, fpInfo, scope, coordinatorContentID))
if coordinatorErr != nil {
if noFatal {
- gplog.Error(coordinatorOutput)
+ gplog.Error("%s", coordinatorOutput)
return
}
- gplog.Fatal(coordinatorErr, coordinatorOutput)
+ gplog.Fatal(coordinatorErr, "%s", coordinatorOutput)
}
// Execute command once on each segment host
@@ -368,14 +368,14 @@ func (plugin *PluginConfig) createHostPluginConfig(contentIDForSegmentOnHost int
if plugin.UsesEncryption() {
pluginName, err := plugin.GetPluginName(c)
if err != nil {
- _, _ = fmt.Fprintf(operating.System.Stdout, err.Error())
- gplog.Fatal(nil, err.Error())
+ _, _ = fmt.Fprintf(operating.System.Stdout, "%s", err.Error())
+ gplog.Fatal(nil, "%s", err.Error())
}
secret, err := GetSecretKey(pluginName, c.GetDirForContent(-1))
if err != nil {
- _, _ = fmt.Fprintf(operating.System.Stdout, err.Error())
- gplog.Fatal(nil, err.Error())
+ _, _ = fmt.Fprintf(operating.System.Stdout, "%s", err.Error())
+ gplog.Fatal(nil, "%s", err.Error())
}
plugin.Options[pluginName] = secret
}
diff --git a/utils/util.go b/utils/util.go
index c2450c53..e773f099 100644
--- a/utils/util.go
+++ b/utils/util.go
@@ -252,7 +252,7 @@ func ValidateGPDBVersionCompatibility(connectionPool *dbconn.DBConn) {
func LogExecutionTime(start time.Time, name string) {
elapsed := time.Since(start)
- gplog.Debug(fmt.Sprintf("%s took %s", name, elapsed))
+ gplog.Debug("%s took %s", name, elapsed)
}
func Exists(slice []string, val string) bool {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org