diff options
author | freva <valerijf@yahoo-inc.com> | 2017-01-26 17:07:17 +0100 |
---|---|---|
committer | freva <valerijf@yahoo-inc.com> | 2017-01-26 17:07:17 +0100 |
commit | 2b8b98a2ca273d1bf27e9f775dc8ec4517bb3438 (patch) | |
tree | 96d2a3ab8513a18d52afabeba464fa341a715ca7 /node-admin | |
parent | c3d7af641984aaa81cd15567a282e35c9e5291ba (diff) |
Make sure that we apply toString() on Path before letting ObjectMapper do it's thing
Diffstat (limited to 'node-admin')
2 files changed, 19 insertions, 18 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java index 529a280388b..92d33c49f74 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainer.java @@ -18,9 +18,9 @@ import com.yahoo.vespa.hosted.node.admin.ContainerNodeSpec; import com.yahoo.vespa.hosted.node.admin.util.Environment; import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger; -import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.file.Files; import java.nio.file.Path; import java.time.Duration; import java.time.Instant; @@ -74,7 +74,7 @@ public class StorageMaintainer { // Throttle to one disk usage calculation at a time. synchronized (monitor) { PrefixLogger logger = PrefixLogger.getNodeAgentLogger(StorageMaintainer.class, containerName); - File containerDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/").toFile(); + Path containerDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/"); try { long used = getDiscUsedInBytes(containerDir); metricsCache.metrics.put("node.disk.used", used); @@ -90,7 +90,7 @@ public class StorageMaintainer { } // Public for testing - long getDiscUsedInBytes(File path) throws IOException, InterruptedException { + long getDiscUsedInBytes(Path path) throws IOException, InterruptedException { final String[] command = {"du", "-xsk", path.toString()}; Process duCommand = new ProcessBuilder().command(command).start(); @@ -124,31 +124,31 @@ public class StorageMaintainer { "/home/y/logs/daemontools_y", "/home/y/logs/nginx", "/home/y/logs/vespa"}; for (String pathToClean : pathsToClean) { - File path = environment.pathInNodeAdminFromPathInNode(containerName, pathToClean).toFile(); - if (path.exists()) { + Path path = environment.pathInNodeAdminFromPathInNode(containerName, pathToClean); + if (Files.exists(path)) { maintainerExecutor.addJob("delete-files") - .withArgument("basePath", path.getAbsolutePath()) + .withArgument("basePath", path) .withArgument("maxAgeSeconds", Duration.ofDays(3).getSeconds()) .withArgument("fileNameRegex", ".*\\.log\\..+") .withArgument("recursive", false); maintainerExecutor.addJob("delete-files") - .withArgument("basePath", path.getAbsolutePath()) + .withArgument("basePath", path) .withArgument("maxAgeSeconds", Duration.ofDays(3).getSeconds()) .withArgument("fileNameRegex", ".*QueryAccessLog.*") .withArgument("recursive", false); } } - File logArchiveDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/y/logs/vespa/logarchive").toFile(); + Path logArchiveDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/y/logs/vespa/logarchive"); maintainerExecutor.addJob("delete-files") - .withArgument("basePath", logArchiveDir.getAbsolutePath()) + .withArgument("basePath", logArchiveDir) .withArgument("maxAgeSeconds", Duration.ofDays(31).getSeconds()) .withArgument("recursive", false); - File fileDistrDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/y/var/db/vespa/filedistribution").toFile(); + Path fileDistrDir = environment.pathInNodeAdminFromPathInNode(containerName, "/home/y/var/db/vespa/filedistribution"); maintainerExecutor.addJob("delete-files") - .withArgument("basePath", fileDistrDir.getAbsolutePath()) + .withArgument("basePath", fileDistrDir) .withArgument("maxAgeSeconds", Duration.ofDays(31).getSeconds()) .withArgument("recursive", false); @@ -181,8 +181,8 @@ public class StorageMaintainer { MaintainerExecutor maintainerExecutor = new MaintainerExecutor(true); maintainerExecutor.addJob("handle-core-dumps") - .withArgument("doneCoredumpsPath", environment.pathInNodeAdminToDoneCoredumps().toString()) - .withArgument("containerCoredumpsPath", environment.pathInNodeAdminFromPathInNode(nodeSpec.containerName, "/home/y/var/crash").toString()) + .withArgument("doneCoredumpsPath", environment.pathInNodeAdminToDoneCoredumps()) + .withArgument("containerCoredumpsPath", environment.pathInNodeAdminFromPathInNode(nodeSpec.containerName, "/home/y/var/crash")) .withArgument("attributes", attributes); maintainerExecutor.execute(); } @@ -196,17 +196,17 @@ public class StorageMaintainer { public void cleanNodeAdmin() { MaintainerExecutor maintainerExecutor = new MaintainerExecutor(true); maintainerExecutor.addJob("delete-directories") - .withArgument("basePath", environment.getPathResolver().getApplicationStoragePathForNodeAdmin().toString()) + .withArgument("basePath", environment.getPathResolver().getApplicationStoragePathForNodeAdmin()) .withArgument("maxAgeSeconds", Duration.ofDays(7).getSeconds()) .withArgument("dirNameRegex", "^" + Pattern.quote(Environment.APPLICATION_STORAGE_CLEANUP_PATH_PREFIX)); maintainerExecutor.addJob("delete-directories") - .withArgument("basePath", environment.pathInNodeAdminToDoneCoredumps().toString()) + .withArgument("basePath", environment.pathInNodeAdminToDoneCoredumps()) .withArgument("maxAgeSeconds", Duration.ofDays(10).getSeconds()); Path nodeAdminJDiskLogsPath = environment.pathInNodeAdminFromPathInNode(NODE_ADMIN, "/home/y/logs/jdisc_core/"); maintainerExecutor.addJob("delete-files") - .withArgument("basePath", nodeAdminJDiskLogsPath.toString()) + .withArgument("basePath", nodeAdminJDiskLogsPath) .withArgument("maxAgeSeconds", Duration.ofDays(31).getSeconds()) .withArgument("recursive", false); maintainerExecutor.execute(); @@ -306,7 +306,8 @@ public class StorageMaintainer { } MaintainerExecutorJob withArgument(String argument, Object value) { - arguments.put(argument, value); + // Transform Path to String, otherwise ObjectMapper wont encode/decode it properly on the other end + arguments.put(argument, (value instanceof Path) ? value.toString() : value); return this; } } diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java index 7ba48a4dbe3..25d267eef28 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/StorageMaintainerTest.java @@ -29,7 +29,7 @@ public class StorageMaintainerTest { Environment environment = new Environment.Builder().build(); StorageMaintainer storageMaintainer = new StorageMaintainer(null, new MetricReceiverWrapper(MetricReceiver.nullImplementation), environment); - long usedBytes = storageMaintainer.getDiscUsedInBytes(folder.getRoot()); + long usedBytes = storageMaintainer.getDiscUsedInBytes(folder.getRoot().toPath()); if (usedBytes * 4 < writeSize || usedBytes > writeSize * 4) fail("Used bytes is " + usedBytes + ", but wrote " + writeSize + " bytes, not even close."); } |