diff --git a/pkg/microservice/aslan/core/common/service/fs/file.go b/pkg/microservice/aslan/core/common/service/fs/file.go index ab83d6991d4a1846bda04a76e39d54051157818a..92e81909e1d1cdf88564fcb133a1544a4de07e78 100644 --- a/pkg/microservice/aslan/core/common/service/fs/file.go +++ b/pkg/microservice/aslan/core/common/service/fs/file.go @@ -92,7 +92,7 @@ func SaveAndUploadFiles(fileTree fs.FS, names []string, localBase, s3Base string // CopyAndUploadFiles copy a tree of files to other dir, at the same time, archives them and uploads to object storage. func CopyAndUploadFiles(names []string, localBase, s3Base, zipPath, currentChartPath string, logger *zap.SugaredLogger) error { - err := copy.Copy(currentChartPath, localBase) + err := copyFilesToDisk(currentChartPath, localBase, logger) if err != nil { logger.Errorf("failed to copy chart info, err %s", err) return err @@ -142,3 +142,37 @@ func saveInMemoryFilesToDisk(fileTree fs.FS, root string, logger *zap.SugaredLog return nil } + +func copyFilesToDisk(src, dest string, logger *zap.SugaredLogger) error { + ok, err := fsutil.DirExists(dest) + if err != nil { + return err + } + + if !ok { + return copy.Copy(src, dest) + } + + tmpDest := dest + ".bak" + if err = os.Rename(dest, tmpDest); err != nil { + return err + } + + if err = copy.Copy(src, dest); err != nil { + logger.Errorf("Failed to copy %s to %s, err: %s", src, dest, err) + if err1 := os.RemoveAll(dest); err1 != nil { + logger.Warnf("Failed to delete path %s, err: %s", dest, err1) + } + if err1 := os.Rename(tmpDest, dest); err1 != nil { + logger.Errorf("Failed to rename path from %s to %s, err: %s", tmpDest, dest, err1) + } + + return err + } + + if err := os.RemoveAll(tmpDest); err != nil { + logger.Warnf("Failed to delete path %s, err: %s", tmpDest, err) + } + + return nil +} diff --git a/pkg/microservice/aslan/core/common/util/helm.go b/pkg/microservice/aslan/core/common/util/helm.go index 827beb0696119bccbd019ab7026b287b40177c90..16589e9f1f2af734385401ff5332f5366bcd685b 100644 --- a/pkg/microservice/aslan/core/common/util/helm.go +++ b/pkg/microservice/aslan/core/common/util/helm.go @@ -121,7 +121,6 @@ func PreLoadServiceManifests(base string, svc *commonmodels.Service, production if ok { return nil } - log.Debugf("base: %s, svc: %+v, production %v", base, svc, production) if err = DownloadServiceManifests(base, svc.ProductName, svc.ServiceName, production); err == nil { return nil