diff --git a/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java b/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java index a57ba1e6..6fab96f4 100644 --- a/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java +++ b/src/main/java/org/jenkinsci/plugins/workflow/libs/LibraryAdder.java @@ -243,8 +243,19 @@ static List retrieve(@NonNull LibraryRecord record, @NonNull LibraryRetriev if (retrieve) { listener.getLogger().println("Caching library " + name + "@" + version); - versionCacheDir.mkdirs(); - retriever.retrieve(name, version, changelog, versionCacheDir, run, listener); + FilePath tmpVersionCacheDir = new FilePath(LibraryCachingConfiguration.getGlobalLibrariesCacheDir(), record.getDirectoryName() + "@tmp"); + try { + if (tmpVersionCacheDir.exists()) { + tmpVersionCacheDir.deleteRecursive(); + } + tmpVersionCacheDir.mkdirs(); + retriever.retrieve(name, version, changelog, tmpVersionCacheDir, run, listener); + tmpVersionCacheDir.renameTo(versionCacheDir); + } finally { + if (tmpVersionCacheDir.exists()) { + tmpVersionCacheDir.deleteRecursive(); + } + } } retrieveLock.readLock().lock(); } finally {