Skip to content

Commit 5d84566

Browse files
committed
Make accessFilter file registration thread safe
1 parent 979e9ec commit 5d84566

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

common/utils/src/main/java/org/graalvm/buildtools/agent/AgentConfiguration.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,10 @@
4040
*/
4141
package org.graalvm.buildtools.agent;
4242

43-
import java.io.File;
4443
import java.io.IOException;
4544
import java.io.InputStream;
4645
import java.io.Serializable;
47-
import java.nio.file.CopyOption;
48-
import java.nio.file.Files;
49-
import java.nio.file.Path;
50-
import java.nio.file.StandardCopyOption;
46+
import java.nio.file.*;
5147
import java.util.ArrayList;
5248
import java.util.Collection;
5349
import java.util.List;
@@ -151,16 +147,18 @@ private void addDefaultAccessFilter() {
151147
}
152148

153149
try(InputStream accessFilter = AgentConfiguration.class.getResourceAsStream(DEFAULT_ACCESS_FILTER_FILE)) {
154-
if (accessFilter != null) {
155-
if (!Files.exists(agentDir)) {
156-
Files.createDirectory(agentDir);
157-
}
158-
159-
Files.copy(accessFilter, accessFilterFile, StandardCopyOption.REPLACE_EXISTING);
160-
accessFilterFiles.add(accessFilterFile.toString());
161-
} else {
150+
if (accessFilter == null) {
162151
throw new IOException("Cannot find access-filter.json on default location: " + DEFAULT_ACCESS_FILTER_FILE);
163152
}
153+
154+
try {
155+
Files.createDirectory(agentDir);
156+
} catch (FileAlreadyExistsException e) {
157+
System.out.println("Agent directory already exists probably because other thread or process created it.");
158+
}
159+
160+
Files.copy(accessFilter, accessFilterFile, StandardCopyOption.REPLACE_EXISTING);
161+
accessFilterFiles.add(accessFilterFile.toString());
164162
} catch (IOException e) {
165163
throw new RuntimeException("Cannot add default access-filter.json" ,e);
166164
}

0 commit comments

Comments
 (0)