Skip to content

Commit f61dd38

Browse files
committed
fix: Fix version upgrade failure in some scenarios
1 parent 551542c commit f61dd38

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

core/app/service/upgrade.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,18 +156,31 @@ func (u *UpgradeService) Upgrade(req dto.Upgrade) error {
156156

157157
global.LOG.Info("backup original data successful, now start to upgrade!")
158158

159-
if err := files.CopyItem(false, true, path.Join(tmpDir, "1panel-core"), "/usr/local/bin"); err != nil {
159+
if err := files.CopyItem(false, true, path.Join(tmpDir, "1panel-core"), "/usr/local/bin/1panel-core.tmp"); err != nil {
160160
global.LOG.Errorf("upgrade 1panel-core failed, err: %v", err)
161161
_ = settingRepo.Update("SystemStatus", "Free")
162162
u.handleRollback(originalDir, 1)
163163
return
164164
}
165-
if err := files.CopyItem(false, true, path.Join(tmpDir, "1panel-agent"), "/usr/local/bin"); err != nil {
165+
if err := files.RenameFile("/usr/local/bin/1panel-core.tmp", "/usr/local/bin/1panel-core"); err != nil {
166+
global.LOG.Errorf("rename 1panel-core failed, err: %v", err)
167+
_ = settingRepo.Update("SystemStatus", "Free")
168+
u.handleRollback(originalDir, 1)
169+
return
170+
}
171+
172+
if err := files.CopyItem(false, true, path.Join(tmpDir, "1panel-agent"), "/usr/local/bin/1panel-agent.tmp"); err != nil {
166173
global.LOG.Errorf("upgrade 1panel-agent failed, err: %v", err)
167174
_ = settingRepo.Update("SystemStatus", "Free")
168175
u.handleRollback(originalDir, 1)
169176
return
170177
}
178+
if err := files.RenameFile("/usr/local/bin/1panel-agent.tmp", "/usr/local/bin/1panel-agent"); err != nil {
179+
global.LOG.Errorf("rename 1panel-agent failed, err: %v", err)
180+
_ = settingRepo.Update("SystemStatus", "Free")
181+
u.handleRollback(originalDir, 1)
182+
return
183+
}
171184

172185
if err := files.CopyItem(false, true, path.Join(tmpDir, "1pctl"), "/usr/local/bin"); err != nil {
173186
global.LOG.Errorf("upgrade 1pctl failed, err: %v", err)

core/utils/files/files.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,22 @@ func CopyFile(src, dst string, withName bool) error {
4949
return nil
5050
}
5151

52+
func RenameFile(src, dst string) error {
53+
if _, err := os.Stat(src); err != nil {
54+
return err
55+
}
56+
if _, err := os.Stat(path.Dir(dst)); err != nil {
57+
if os.IsNotExist(err) {
58+
_ = os.MkdirAll(path.Dir(dst), os.ModePerm)
59+
}
60+
}
61+
stdout, err := cmd.RunDefaultWithStdoutBashCf("mv '%s' '%s'", src, dst)
62+
if err != nil {
63+
return fmt.Errorf("handle mv '%s' '%s' failed, stdout: %s, err: %v", src, dst, stdout, err)
64+
}
65+
return nil
66+
}
67+
5268
func CopyItem(isDir, withName bool, src, dst string) error {
5369
if path.Base(src) != path.Base(dst) && !withName {
5470
dst = path.Join(dst, path.Base(src))

0 commit comments

Comments
 (0)