diff --git a/pkg/cluster/operation/download.go b/pkg/cluster/operation/download.go index a2dfb6a6f5..fe7f431df7 100644 --- a/pkg/cluster/operation/download.go +++ b/pkg/cluster/operation/download.go @@ -51,7 +51,7 @@ func Download(component, nodeOS, arch string, version string) error { if err := repo.DownloadComponent(component, version, targetPath); err != nil { return err } - } else { + } else if version != "nightly" { if err := repo.VerifyComponent(component, version, targetPath); err != nil { os.Remove(targetPath) } diff --git a/pkg/repository/v1_repository.go b/pkg/repository/v1_repository.go index 9eab0529a4..501f049b42 100644 --- a/pkg/repository/v1_repository.go +++ b/pkg/repository/v1_repository.go @@ -483,12 +483,16 @@ func (r *V1Repository) updateComponentManifest(id string, withYanked bool) (*v1m // DownloadComponent downloads the component specified by item into local file, // the component will be removed if hash is not correct func (r *V1Repository) DownloadComponent(item *v1manifest.VersionItem, target string) error { - targetDir := filepath.Dir(target) - err := r.mirror.Download(item.URL, targetDir) + // make a tempdir such that every download will not inference each other + targetDir, err := os.MkdirTemp(filepath.Dir(target), "download") if err != nil { return err } + if err := r.mirror.Download(item.URL, targetDir); err != nil { + return err + } + // the downloaded file is named by item.URL, which maybe differ to target name if downloaded := path.Join(targetDir, item.URL); downloaded != target { err := os.Rename(downloaded, target)