diff --git a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java index 440f8a3e1e9a0867e3032db9fdd0654488634515..0314f7b9a08d7ad2caef13b26ff11db6d1d420de 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java @@ -83,9 +83,15 @@ public class PutFileController { File file = path.toFile(); - if (!file.getParentFile().exists()) { - if (!file.getParentFile().mkdirs()) { - throw new IllegalStateException("Unable to create parent folder: " + file.getParentFile().getAbsolutePath()); + /** + * This block must be synchronized, to avoid concurrency issues when + * multiple files are uploaded to a new folder in parallel. + */ + synchronized (this) { + if (!file.getParentFile().exists()) { + if (!file.getParentFile().mkdirs()) { + throw new IllegalStateException("Unable to create parent folder: " + file.getParentFile().getAbsolutePath()); + } } }