From 4c16f2cd95bb5deb36194e85dfc102dfe8af878a Mon Sep 17 00:00:00 2001 From: Vincent Latombe Date: Sat, 23 May 2020 14:16:05 +0200 Subject: [PATCH] Make Computer#getLogDir thread-safe (#4730) --- core/src/main/java/hudson/model/Computer.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index 073af962c8..94782b6189 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -195,6 +195,8 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces protected final Object statusChangeLock = new Object(); + private final Object logDirLock = new String("logDirLock"); + /** * Keeps track of stack traces to track the termination requests for this computer. * @@ -303,10 +305,12 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces */ protected @NonNull File getLogDir() { File dir = new File(Jenkins.get().getRootDir(),"logs/slaves/"+nodeName); - try { - IOUtils.mkdirs(dir); - } catch (IOException x) { - LOGGER.log(Level.SEVERE, "Failed to create agent log directory " + dir, x); + synchronized (logDirLock) { + try { + IOUtils.mkdirs(dir); + } catch (IOException x) { + LOGGER.log(Level.SEVERE, "Failed to create agent log directory " + dir, x); + } } return dir; }