This is an automated email from the ASF dual-hosted git repository.

lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new ab32c030c5 Janitor shall remove abandoned cache dirs
ab32c030c5 is described below

commit ab32c030c5ecb2e948252b0469391b832f9b2665
Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com>
AuthorDate: Tue Mar 29 16:35:56 2022 -0700

    Janitor shall remove abandoned cache dirs
---
 .../src/org/netbeans/modules/janitor/Janitor.java  | 26 +++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/platform/janitor/src/org/netbeans/modules/janitor/Janitor.java 
b/platform/janitor/src/org/netbeans/modules/janitor/Janitor.java
index f93d60ee27..0d2ee6fe4a 100644
--- a/platform/janitor/src/org/netbeans/modules/janitor/Janitor.java
+++ b/platform/janitor/src/org/netbeans/modules/janitor/Janitor.java
@@ -30,9 +30,11 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.WeakHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.prefs.Preferences;
@@ -70,6 +72,7 @@ public class Janitor {
     public static final String PROP_UNUSED_DAYS = "UnusedDays"; //NOI18N
 
     private static final String LOGFILE_NAME = "var/log/messages.log"; //NOI18N
+    private static final String ALL_CHECKSUM_NAME = 
"lastModified/all-checksum.txt"; //NOI18N
     @StaticResource
     private static final String CLEAN_ICON = 
"org/netbeans/modules/janitor/resources/clean.gif"; //NOI18N
 
@@ -177,7 +180,7 @@ public class Janitor {
     }
 
     static void deleteDir(File dir) {
-        if (dir == null) return;
+        if ((dir == null) || !dir.exists()) return;
         Path path = dir.toPath();
         try {
             Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
@@ -233,10 +236,12 @@ public class Janitor {
     static List<Pair<String, Integer>> getOtherVersions() {
         File userDir = Places.getUserDirectory();
         List<Pair<String, Integer>> ret = new LinkedList<>();
+        Set<String> availableUserDirs = new HashSet<>();
         Instant now = Instant.now();
         if (userDir != null) {
             File userParent = userDir.getParentFile();
             for (File f : userParent.listFiles()) {
+                availableUserDirs.add(f.getName());
                 Path logFile = new File(f, LOGFILE_NAME).toPath();
                 if (!f.equals(userDir) && Files.isRegularFile(logFile)) {
                     try {
@@ -251,6 +256,25 @@ public class Janitor {
                 }
             }
         }
+
+        //Search for abandoned cache dirs (cache dirs with no user dir)
+        File cacheDir = Places.getCacheDirectory();
+        if (cacheDir != null) {
+            File cacheParent = cacheDir.getParentFile();
+            for (File f : cacheParent.listFiles()) {
+                if (f.isDirectory() && 
!availableUserDirs.contains(f.getName())) {
+                    if (new File(f, ALL_CHECKSUM_NAME).exists() && 
!cacheDir.equals(f)) {
+                        try {
+                            Instant lastModified = 
Files.getLastModifiedTime(f.toPath()).toInstant();
+                            Integer age = (int) Duration.between(lastModified, 
now).toDays();
+                            ret.add(Pair.of(f.getName(), age));
+                        } catch (IOException ex) {
+                            //Just ignore what we can't process
+                        }
+                    }
+                }
+            }
+        }
         return ret;
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to