diff options
author | Harald Musum <musum@yahooinc.com> | 2023-01-02 09:13:26 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-01-02 09:13:26 +0100 |
commit | 37bd63b9f4590d295cb82758f6b3f13325b5acfe (patch) | |
tree | f32832998bc5fefec78fb9420d58f9ac6f5a3d7d /configserver/src/main | |
parent | 3f1f34a3a32ef7df98597619b9b26265a9a2dcce (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.java | 33 |
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) { |