From 219fb016aeaea985d2cb42c4725768ca8eed0324 Mon Sep 17 00:00:00 2001 From: rainzm Date: Fri, 25 Feb 2022 18:49:29 +0800 Subject: [PATCH] fix(glance): re-convert as long as subformat is not active MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前的写法会导致saving或者save_fail状态的subformat,不会再次 转换。而且镜像是否需要转换,由ImageCheckTask决定了,ImageConvertTask 只需要注意不重新转换active的subformat就好了,save失败的subformat 也应该设置状态为save_fail。 --- pkg/image/models/image_subs.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/image/models/image_subs.go b/pkg/image/models/image_subs.go index e51c34c7e0..64923a51eb 100644 --- a/pkg/image/models/image_subs.go +++ b/pkg/image/models/image_subs.go @@ -118,13 +118,19 @@ func (self *SImageSubformat) DoConvert(image *SImage) error { } func (self *SImageSubformat) Save(image *SImage) error { + var err error + defer func() { + if err != nil { + db.Update(self, func() error { + self.Status = api.IMAGE_STATUS_SAVE_FAIL + return nil + }) + } + }() if self.Status == api.IMAGE_STATUS_ACTIVE { return nil } - if self.Status != api.IMAGE_STATUS_QUEUED { - return nil // httperrors.NewInvalidStatusError("cannot save in status %s", self.Status) - } - _, err := db.Update(self, func() error { + _, err = db.Update(self, func() error { self.Status = api.IMAGE_STATUS_SAVING return nil }) @@ -166,9 +172,9 @@ func (self *SImageSubformat) SaveTorrent() error { if self.TorrentStatus == api.IMAGE_STATUS_ACTIVE { return nil } - if self.TorrentStatus != api.IMAGE_STATUS_QUEUED { - return nil // httperrors.NewInvalidStatusError("cannot save torrent in status %s", self.Status) - } + // if self.TorrentStatus != api.IMAGE_STATUS_QUEUED { + // return nil // httperrors.NewInvalidStatusError("cannot save torrent in status %s", self.Status) + // } imgPath := self.GetLocalLocation() torrentPath := filepath.Join(options.Options.TorrentStoreDir, fmt.Sprintf("%s.torrent", filepath.Base(imgPath))) _, err := db.Update(self, func() error {