feat: configurable cluster timeout (CLUSTER_TIMEOUT_MIN) and use in TUI backup
This commit is contained in:
@ -353,6 +353,9 @@ export MAX_CORES=16
|
|||||||
# Backup settings
|
# Backup settings
|
||||||
export BACKUP_DIR=/var/backups
|
export BACKUP_DIR=/var/backups
|
||||||
export COMPRESS_LEVEL=6
|
export COMPRESS_LEVEL=6
|
||||||
|
# Cluster backup timeout in minutes (controls overall cluster operation timeout)
|
||||||
|
# Default: 240 (4 hours)
|
||||||
|
export CLUSTER_TIMEOUT_MIN=240
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🏗️ Architecture
|
## 🏗️ Architecture
|
||||||
|
|||||||
@ -54,6 +54,8 @@ type Config struct {
|
|||||||
// Single database backup/restore
|
// Single database backup/restore
|
||||||
SingleDBName string
|
SingleDBName string
|
||||||
RestoreDBName string
|
RestoreDBName string
|
||||||
|
// Timeouts (in minutes)
|
||||||
|
ClusterTimeoutMinutes int
|
||||||
}
|
}
|
||||||
|
|
||||||
// New creates a new configuration with default values
|
// New creates a new configuration with default values
|
||||||
@ -129,6 +131,9 @@ func New() *Config {
|
|||||||
// Single database options
|
// Single database options
|
||||||
SingleDBName: getEnvString("SINGLE_DB_NAME", ""),
|
SingleDBName: getEnvString("SINGLE_DB_NAME", ""),
|
||||||
RestoreDBName: getEnvString("RESTORE_DB_NAME", ""),
|
RestoreDBName: getEnvString("RESTORE_DB_NAME", ""),
|
||||||
|
|
||||||
|
// Timeouts
|
||||||
|
ClusterTimeoutMinutes: getEnvInt("CLUSTER_TIMEOUT_MIN", 240),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure canonical defaults are enforced
|
// Ensure canonical defaults are enforced
|
||||||
|
|||||||
@ -88,7 +88,9 @@ type backupCompleteMsg struct {
|
|||||||
|
|
||||||
func executeBackupWithTUIProgress(cfg *config.Config, log logger.Logger, backupType, dbName string, ratio int, reporter *TUIProgressReporter) tea.Cmd {
|
func executeBackupWithTUIProgress(cfg *config.Config, log logger.Logger, backupType, dbName string, ratio int, reporter *TUIProgressReporter) tea.Cmd {
|
||||||
return func() tea.Msg {
|
return func() tea.Msg {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Minute)
|
// Use configurable cluster timeout (minutes) from config; default set in config.New()
|
||||||
|
clusterTimeout := time.Duration(cfg.ClusterTimeoutMinutes) * time.Minute
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), clusterTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|||||||
Reference in New Issue
Block a user