From 0a87f4b87293313b826ad534fd535fe9d8652f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Sun, 26 Apr 2020 18:11:08 +0200 Subject: [PATCH] Fix put to cache check putIfAbsent should return null, whenever there was no value for the key before it was put with the call. But however this does not seem to work with the concurrent hash map (liskov?) --- .../sonia/scm/repository/util/CachingAllWorkdirProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/util/CachingAllWorkdirProvider.java b/scm-core/src/main/java/sonia/scm/repository/util/CachingAllWorkdirProvider.java index e66f2fb7ae..455ac14cdb 100644 --- a/scm-core/src/main/java/sonia/scm/repository/util/CachingAllWorkdirProvider.java +++ b/scm-core/src/main/java/sonia/scm/repository/util/CachingAllWorkdirProvider.java @@ -79,7 +79,8 @@ public class CachingAllWorkdirProvider implements CacheSupportingWorkdirProvider @Override public void contextClosed(CreateWorkdirContext createWorkdirContext, File workdir) throws IOException { String id = createWorkdirContext.getScmRepository().getId(); - if (workdirs.putIfAbsent(id, workdir) != null) { + File putResult = workdirs.putIfAbsent(id, workdir); + if (putResult != null && putResult != workdir) { deleteWorkdir(workdir); } }