diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-06-26 08:25:37 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2020-06-26 08:25:37 +0200 |
commit | 3107db1ddeba678b1fa9d8523d96b36b8f32003a (patch) | |
tree | 1715ff807c5a1087fe59a42d371caf38376f49a4 /node-admin | |
parent | 21b21e029359213038ca4ffbcb17e9687a10c64b (diff) |
Avoid going out of memory when deleting files
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/file/FileFinder.java | 8 |
1 files changed, 5 insertions, 3 deletions
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<Path> 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<Path> paths = deletedPaths.stream() .map(basePath::relativize) |