Skip to content

Commit 9424d06

Browse files
authored
fix: Fix version upgrade failure in some scenarios (#11322)
1 parent 3db8e47 commit 9424d06

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

core/app/service/upgrade.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,13 @@ 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.CopyFileWithRename(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.CopyFileWithRename(path.Join(tmpDir, "1panel-agent"), "/usr/local/bin/1panel-agent.tmp"); err != nil {
166166
global.LOG.Errorf("upgrade 1panel-agent failed, err: %v", err)
167167
_ = settingRepo.Update("SystemStatus", "Free")
168168
u.handleRollback(originalDir, 1)

core/utils/files/files.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,25 @@ func CopyItem(isDir, withName bool, src, dst string) error {
7373
return nil
7474
}
7575

76+
func CopyFileWithRename(src, dst string) error {
77+
srcInfo, err := os.Stat(path.Dir(src))
78+
if err != nil {
79+
return err
80+
}
81+
if _, err := os.Stat(path.Dir(dst)); err != nil {
82+
if os.IsNotExist(err) {
83+
_ = os.MkdirAll(path.Dir(dst), srcInfo.Mode())
84+
}
85+
}
86+
if err := cmd.RunDefaultBashCf("cp -f %s %s.tmp", src, dst); err != nil {
87+
return fmt.Errorf("handle cp file failed, err: %v", err)
88+
}
89+
if err = cmd.RunDefaultBashCf("mv %s.tmp %s", dst, dst); err != nil {
90+
return err
91+
}
92+
return nil
93+
}
94+
7695
func HandleTar(sourceDir, targetDir, name, exclusionRules string, secret string) error {
7796
if _, err := os.Stat(targetDir); err != nil && os.IsNotExist(err) {
7897
if err = os.MkdirAll(targetDir, os.ModePerm); err != nil {

0 commit comments

Comments
 (0)