mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
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
This commit is contained in:
parent
763f9d4f5d
commit
79a3edeeef
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
@ -498,4 +499,58 @@ public final class yacyVersion implements Comparator<yacyVersion>, Comparable<ya
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* keep only releases of last month (minimum latest and 1 main (maybe the same))
|
||||
*
|
||||
* @param filesPath where all downloaded files reside
|
||||
* @param deleteAfterDays
|
||||
*/
|
||||
public static void deleteOldDownloads(File filesPath, int deleteAfterDays) {
|
||||
serverLog.logFine("STARTUP", "deleting downloaded releases older than "+ deleteAfterDays +" days");
|
||||
final long deleteAfterMillis = deleteAfterDays * 24 * 60 * 60000l;
|
||||
|
||||
// list downloaded releases
|
||||
yacyVersion release;
|
||||
String[] downloaded = filesPath.list();
|
||||
|
||||
// parse all filenames and put them in a sorted set
|
||||
TreeSet<yacyVersion> downloadedreleases = new TreeSet<yacyVersion>();
|
||||
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<yacyVersion> 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue
Block a user