Compare commits

..

5 Commits

Author SHA1 Message Date
bf1722c316 Update bin/README.md for v3.42.72
All checks were successful
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m24s
CI/CD / Build & Release (push) Has been skipped
2026-01-18 21:25:19 +01:00
a759f4d3db v3.42.72: Fix Large DB Mode not applying when changing profiles
All checks were successful
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m25s
CI/CD / Build & Release (push) Successful in 3m13s
Critical fix: Large DB Mode settings (reduced parallelism, increased locks)
were not being reapplied when user changed resource profiles in Settings.

This caused cluster restores to fail with 'out of shared memory' errors on
low-resource VMs even when Large DB Mode was enabled.

Now ApplyResourceProfile() properly applies LargeDBMode modifiers after
setting base profile values, ensuring parallelism stays reduced.

Example: balanced profile with Large DB Mode:
- ClusterParallelism: 4 → 2 (halved)
- MaxLocksPerTxn: 2048 → 8192 (increased)

This allows successful cluster restores on low-spec VMs.
2026-01-18 21:23:35 +01:00
7cf1d6f85b Update bin/README.md for v3.42.71
Some checks failed
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m25s
CI/CD / Build & Release (push) Has been cancelled
2026-01-18 21:17:11 +01:00
b305d1342e v3.42.71: Fix error message formatting + code alignment
All checks were successful
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m24s
CI/CD / Build & Release (push) Successful in 3m12s
- Fixed incorrect diagnostic message for shared memory exhaustion
  (was 'Cannot access file', now 'PostgreSQL lock table exhausted')
- Improved clarity of lock capacity formula display
- Code formatting: aligned struct field comments for consistency
- Files affected: restore_exec.go, backup_exec.go, persist.go
2026-01-18 21:13:35 +01:00
5456da7183 Update bin/README.md for v3.42.70
All checks were successful
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m26s
CI/CD / Build & Release (push) Has been skipped
2026-01-18 18:53:44 +01:00
5 changed files with 18 additions and 12 deletions

View File

@@ -4,8 +4,8 @@ This directory contains pre-compiled binaries for the DB Backup Tool across mult
## Build Information ## Build Information
- **Version**: 3.42.50 - **Version**: 3.42.50
- **Build Time**: 2026-01-18_17:17:17_UTC - **Build Time**: 2026-01-18_20:23:55_UTC
- **Git Commit**: a0a401c - **Git Commit**: a759f4d
## Recent Updates (v1.1.0) ## Recent Updates (v1.1.0)
- ✅ Fixed TUI progress display with line-by-line output - ✅ Fixed TUI progress display with line-by-line output

View File

@@ -445,6 +445,12 @@ func (c *Config) ApplyResourceProfile(profileName string) error {
// Apply profile settings // Apply profile settings
c.ResourceProfile = profile.Name c.ResourceProfile = profile.Name
// If LargeDBMode is enabled, apply its modifiers
if c.LargeDBMode {
profile = cpu.ApplyLargeDBMode(profile)
}
c.ClusterParallelism = profile.ClusterParallelism c.ClusterParallelism = profile.ClusterParallelism
c.Jobs = profile.Jobs c.Jobs = profile.Jobs
c.DumpJobs = profile.DumpJobs c.DumpJobs = profile.DumpJobs

View File

@@ -30,7 +30,7 @@ type LocalConfig struct {
// Performance settings // Performance settings
CPUWorkload string CPUWorkload string
MaxCores int MaxCores int
ClusterTimeout int // Cluster operation timeout in minutes (default: 1440 = 24 hours) ClusterTimeout int // Cluster operation timeout in minutes (default: 1440 = 24 hours)
ResourceProfile string ResourceProfile string
LargeDBMode bool // Enable large database mode (reduces parallelism, increases locks) LargeDBMode bool // Enable large database mode (reduces parallelism, increases locks)

View File

@@ -39,8 +39,8 @@ type BackupExecutionModel struct {
cancelling bool // True when user has requested cancellation cancelling bool // True when user has requested cancellation
err error err error
result string result string
archivePath string // Path to created archive (for summary) archivePath string // Path to created archive (for summary)
archiveSize int64 // Size of created archive (for summary) archiveSize int64 // Size of created archive (for summary)
startTime time.Time startTime time.Time
elapsed time.Duration // Final elapsed time elapsed time.Duration // Final elapsed time
details []string details []string
@@ -63,8 +63,8 @@ type sharedBackupProgressState struct {
dbTotal int dbTotal int
dbDone int dbDone int
dbName string dbName string
overallPhase int // 1=globals, 2=databases, 3=compressing overallPhase int // 1=globals, 2=databases, 3=compressing
phaseDesc string // Description of current phase phaseDesc string // Description of current phase
hasUpdate bool hasUpdate bool
phase2StartTime time.Time // When phase 2 started (for realtime ETA calculation) phase2StartTime time.Time // When phase 2 started (for realtime ETA calculation)
dbPhaseElapsed time.Duration // Elapsed time since database backup phase started dbPhaseElapsed time.Duration // Elapsed time since database backup phase started

View File

@@ -152,8 +152,8 @@ type sharedProgressState struct {
currentDB string currentDB string
// Timing info for database restore phase // Timing info for database restore phase
dbPhaseElapsed time.Duration // Elapsed time since restore phase started dbPhaseElapsed time.Duration // Elapsed time since restore phase started
dbAvgPerDB time.Duration // Average time per database restore dbAvgPerDB time.Duration // Average time per database restore
phase3StartTime time.Time // When phase 3 started (for realtime ETA calculation) phase3StartTime time.Time // When phase 3 started (for realtime ETA calculation)
// Overall phase tracking (1=Extract, 2=Globals, 3=Databases) // Overall phase tracking (1=Extract, 2=Globals, 3=Databases)
@@ -1171,12 +1171,12 @@ func formatRestoreError(errStr string) string {
// Provide specific recommendations based on error // Provide specific recommendations based on error
if strings.Contains(errStr, "out of shared memory") || strings.Contains(errStr, "max_locks_per_transaction") { if strings.Contains(errStr, "out of shared memory") || strings.Contains(errStr, "max_locks_per_transaction") {
s.WriteString(errorStyle.Render(" • Cannot access file: stat : no such file or directory\n")) s.WriteString(errorStyle.Render(" • PostgreSQL lock table exhausted\n"))
s.WriteString("\n") s.WriteString("\n")
s.WriteString(infoStyle.Render(" ─── [HINT] Recommendations ────────────────────────────────")) s.WriteString(infoStyle.Render(" ─── [HINT] Recommendations ────────────────────────────────"))
s.WriteString("\n\n") s.WriteString("\n\n")
s.WriteString(" Lock table exhausted. Total capacity = max_locks_per_transaction\n") s.WriteString(" Lock capacity = max_locks_per_transaction\n")
s.WriteString(" × (max_connections + max_prepared_transactions).\n\n") s.WriteString(" × (max_connections + max_prepared_transactions)\n\n")
s.WriteString(" If you reduced VM size or max_connections, you need higher\n") s.WriteString(" If you reduced VM size or max_connections, you need higher\n")
s.WriteString(" max_locks_per_transaction to compensate.\n\n") s.WriteString(" max_locks_per_transaction to compensate.\n\n")
s.WriteString(successStyle.Render(" FIX OPTIONS:\n")) s.WriteString(successStyle.Render(" FIX OPTIONS:\n"))