From 3107db1ddeba678b1fa9d8523d96b36b8f32003a Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Fri, 26 Jun 2020 08:25:37 +0200 Subject: Avoid going out of memory when deleting files --- .../yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'node-admin/src/main/java/com/yahoo') diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java index 121cb244715..d3ff1b41a38 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java @@ -110,17 +110,19 @@ public class FileFinder { * @return true iff anything was matched and deleted */ public boolean deleteRecursively(TaskContext context) { + final int limit = 20; + int[] numDeleted = { 0 }; List deletedPaths = new ArrayList<>(); try { forEach(attributes -> { if (attributes.unixPath().deleteRecursively()) { - deletedPaths.add(attributes.path()); + if (numDeleted[0]++ <= limit) deletedPaths.add(attributes.path()); } }); } finally { - if (deletedPaths.size() > 20) { - context.log(logger, "Deleted " + deletedPaths.size() + " paths under " + basePath); + if (numDeleted[0] > limit) { + context.log(logger, "Deleted " + numDeleted[0] + " paths under " + basePath); } else if (deletedPaths.size() > 0) { List paths = deletedPaths.stream() .map(basePath::relativize) -- cgit v1.2.3