summaryrefslogtreecommitdiffstats
path: root/configserver/src/main
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-01-02 09:13:26 +0100
committerHarald Musum <musum@yahooinc.com>2023-01-02 09:13:26 +0100
commit37bd63b9f4590d295cb82758f6b3f13325b5acfe (patch)
treef32832998bc5fefec78fb9420d58f9ac6f5a3d7d /configserver/src/main
parent3f1f34a3a32ef7df98597619b9b26265a9a2dcce (diff)
Always use lock when adding or deleting files from FileDirectory
Diffstat (limited to 'configserver/src/main')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java33
1 files changed, 11 insertions, 22 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
index 28ad003a2d6..a999498577c 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java
@@ -10,9 +10,6 @@ import com.yahoo.config.FileReference;
import com.yahoo.io.IOUtils;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.defaults.Defaults;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.FlagSource;
-import com.yahoo.vespa.flags.Flags;
import net.jpountz.xxhash.XXHash64;
import net.jpountz.xxhash.XXHashFactory;
import java.io.File;
@@ -40,16 +37,14 @@ public class FileDirectory extends AbstractComponent {
private final Locks<FileReference> locks = new Locks<>(1, TimeUnit.MINUTES);
private final File root;
- private final BooleanFlag useLock;
@Inject
- public FileDirectory(ConfigserverConfig configserverConfig, FlagSource flagSource) {
- this(new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir())), flagSource);
+ public FileDirectory(ConfigserverConfig configserverConfig) {
+ this(new File(Defaults.getDefaults().underVespaHome(configserverConfig.fileReferencesDir())));
}
- public FileDirectory(File rootDir, FlagSource flagSource) {
+ public FileDirectory(File rootDir) {
this.root = rootDir;
- this.useLock = Flags.USE_LOCKS_IN_FILEDISTRIBUTION.bindTo(flagSource);
try {
ensureRootExist();
} catch (IllegalArgumentException e) {
@@ -119,24 +114,18 @@ public class FileDirectory extends AbstractComponent {
Long hash = computeHash(source);
FileReference fileReference = fileReferenceFromHash(hash);
- if (useLock.value())
- try (Lock lock = locks.lock(fileReference)) {
- return addFile(source, fileReference, hash);
- }
- else
+ try (Lock lock = locks.lock(fileReference)) {
return addFile(source, fileReference, hash);
+ }
}
public void delete(FileReference fileReference, Function<FileReference, Boolean> isInUse) {
- if (useLock.value())
- try (Lock lock = locks.lock(fileReference)) {
- if (isInUse.apply(fileReference))
- log.log(Level.FINE, "Unable to delete file reference '" + fileReference.value() + "' since it is still in use");
- else
- deleteDirRecursively(destinationDir(fileReference));
- }
- else
- deleteDirRecursively(destinationDir(fileReference));
+ try (Lock lock = locks.lock(fileReference)) {
+ if (isInUse.apply(fileReference))
+ log.log(Level.FINE, "Unable to delete file reference '" + fileReference.value() + "' since it is still in use");
+ else
+ deleteDirRecursively(destinationDir(fileReference));
+ }
}
private void deleteDirRecursively(File dir) {