From 79a3edeeef4e015656d9ab05416da5b28e634752 Mon Sep 17 00:00:00 2001 From: danielr Date: Tue, 22 Apr 2008 16:53:53 +0000 Subject: [PATCH] deleting downloaded releases after x days (default 30) git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4724 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- defaults/yacy.init | 3 ++ source/de/anomic/yacy/yacyVersion.java | 55 ++++++++++++++++++++++++++ source/yacy.java | 4 ++ 3 files changed, 62 insertions(+) diff --git a/defaults/yacy.init b/defaults/yacy.init index cb47b0947..a31e2361b 100644 --- a/defaults/yacy.init +++ b/defaults/yacy.init @@ -99,6 +99,9 @@ update.time.lookup = 0 update.time.download = 0 # the deploy time when the last update was done; milliseconds since epoch update.time.deploy = 0 +# delete old downloaded files after this amount of days to free disk space +# the latest release is always kept +update.deleteOld = 30 # restart-option # a peer can be re-started periodically diff --git a/source/de/anomic/yacy/yacyVersion.java b/source/de/anomic/yacy/yacyVersion.java index eeb42f28a..f04070605 100644 --- a/source/de/anomic/yacy/yacyVersion.java +++ b/source/de/anomic/yacy/yacyVersion.java @@ -34,6 +34,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -497,5 +498,59 @@ public final class yacyVersion implements Comparator, Comparable downloadedreleases = new TreeSet(); + for (int j = 0; j < downloaded.length; j++) { + try { + release = new yacyVersion(downloaded[j]); + downloadedreleases.add(release); + } catch (RuntimeException e) { + // not a valid release + } + } + + // keep latest version + final yacyVersion latest = downloadedreleases.last(); + downloadedreleases.remove(latest); + // if latest is a developer release, we also keep a main release + boolean keepMain = !latest.mainRelease; + + // remove old files + long now = System.currentTimeMillis(); + System.out.println("+-+ DEBUG now is "+ new Date(now)); + final Iterator iter = downloadedreleases.descendingIterator(); + while (iter.hasNext()) { + release = iter.next(); + + if(keepMain && release.mainRelease) { + // we found the latest main release + keepMain = false; + continue; + } + + File downloadedFile = new File(filesPath + File.separator + release.name); + System.out.println("+-+ DEBUG lastModified of "+ downloadedFile.getName() +" is "+ new Date(downloadedFile.lastModified()) +" delta="+ (now-downloadedFile.lastModified()) +" > "+ deleteAfterMillis); + if(now - downloadedFile.lastModified() > deleteAfterMillis) { + if(!downloadedFile.delete()) { + serverLog.logWarning("STARTUP", "cannot delete old release "+ downloadedFile.getAbsolutePath()); + } + } + } + } } diff --git a/source/yacy.java b/source/yacy.java index 4d9adb176..604fd5802 100644 --- a/source/yacy.java +++ b/source/yacy.java @@ -322,6 +322,10 @@ public final class yacy { migration.migrate(sb, oldRev, newRev); + // delete old release files + int deleteOldDownloadsAfterDays = (int) sb.getConfigLong("update.deleteOld", 30); + yacyVersion.deleteOldDownloads(sb.releasePath, deleteOldDownloadsAfterDays ); + // start main threads final String port = sb.getConfig("port", "8080"); try {