summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2017-11-13 13:48:15 +0100
committerHarald Musum <musum@oath.com>2017-11-13 13:48:15 +0100
commit51268887ba8abe87a62cb07a6fe3fcf3194a8560 (patch)
tree80b388a8432f18787d09b695ec7e0cabfeabf881 /configserver
parente006cf7cb1dfa3dc7f5a3a21923ed41e77c6c30b (diff)
Fix adding file reference
Handle destination dir existing Use createTempDirectory
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDirectory.java17
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java2
3 files changed, 13 insertions, 8 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 5a7bc4e7e82..b0042b15470 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
@@ -5,6 +5,7 @@ package com.yahoo.vespa.config.server.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.config.model.api.FileDistribution;
import com.yahoo.io.IOUtils;
+import com.yahoo.log.LogLevel;
import com.yahoo.text.Utf8;
import net.jpountz.xxhash.XXHash64;
import net.jpountz.xxhash.XXHashFactory;
@@ -13,6 +14,8 @@ import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.logging.Logger;
public class FileDirectory {
@@ -88,22 +91,24 @@ public class FileDirectory {
throw new IllegalArgumentException(e);
}
}
+
public FileReference addFile(File source, FileReference reference) {
ensureRootExist();
try {
File destinationDir = new File(root, reference.value());
if (!destinationDir.exists()) {
destinationDir.mkdir();
- File tempDestinationDir = File.createTempFile("writing", null, root);
- tempDestinationDir.mkdir();
- File destination = new File(tempDestinationDir, source.getName());
+ Path tempDestinationDir = Files.createTempDirectory(root.toPath(), "writing");
+ File destination = new File(tempDestinationDir.toFile(), source.getName());
IOUtils.copy(source, destination);
if (!destinationDir.exists()) {
- if ( ! tempDestinationDir.renameTo(destinationDir)) {
- log.warning("Failed moving '" + tempDestinationDir.getAbsolutePath() + "' to '" + destination.getAbsolutePath() + "'.");
+ if ( ! tempDestinationDir.toFile().renameTo(destinationDir)) {
+ log.warning("Failed moving '" + tempDestinationDir.toFile().getAbsolutePath() + "' to '" + destination.getAbsolutePath() + "'.");
}
+ } else {
+ IOUtils.copyDirectory(tempDestinationDir.toFile(), destinationDir, 1);
}
- IOUtils.recursiveDeleteDir(tempDestinationDir);
+ IOUtils.recursiveDeleteDir(tempDestinationDir.toFile());
}
return reference;
} catch (IOException e) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
index 2ee74689ea9..a504cd120ee 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileServer.java
@@ -70,7 +70,7 @@ public class FileServer {
private void serveFile(FileReference reference, Receiver target) {
File file = root.getFile(reference);
// TODO remove once verified in system tests.
- log.info("Start serving reference '" + reference.toString() + "' with file '" + file.getAbsolutePath() + "'");
+ log.info("Start serving reference '" + reference.value() + "' with file '" + file.getAbsolutePath() + "'");
byte [] blob = new byte [0];
boolean success = false;
String errorDescription = "OK";
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
index 617a054d0c7..7c5adb3b932 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java
@@ -451,7 +451,7 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener {
fileBlob.parameters().add(new StringValue(status.getDescription()));
target.invokeSync(fileBlob, 600);
if (fileBlob.isError()) {
- log.warning("Failed delivering reference '" + reference + "' with file '" + filename + "' to " +
+ log.warning("Failed delivering reference '" + reference.value() + "' with file '" + filename + "' to " +
target.toString() + " with error : '" + fileBlob.errorMessage() + "'.");
}
}