From 4a905ec1345451ae030a5a538b607427a5b3f645 Mon Sep 17 00:00:00 2001 From: sixcooler Date: Tue, 10 Nov 2015 20:27:17 +0100 Subject: [PATCH] fix to not let the AccessTracker-Log grow to much, but have enough data to monitor. (+gitignore-correction) --- .../net/yacy/search/query/AccessTracker.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/source/net/yacy/search/query/AccessTracker.java b/source/net/yacy/search/query/AccessTracker.java index b050ee4ae..07c06b15d 100644 --- a/source/net/yacy/search/query/AccessTracker.java +++ b/source/net/yacy/search/query/AccessTracker.java @@ -48,7 +48,8 @@ import net.yacy.search.EventTracker; public class AccessTracker { - private final static long DUMP_PERIOD = 60000L; + private final static long DUMP_PERIOD = 3600000L; + private final static int DUMP_SIZE = 50000; private static final int minSize = 100; private static final int maxSize = 1000; @@ -89,6 +90,8 @@ public class AccessTracker { private static final LinkedList remoteSearches = new LinkedList(); private static final ArrayList log = new ArrayList(); private static long lastLogDump = System.currentTimeMillis(); + private static long localCount = 0; + private static long remoteCount = 0; private static File dumpFile = null; public static void setDumpFile(File f) { @@ -141,9 +144,9 @@ public class AccessTracker { return null; } - public static int size(final Location location) { - if (location == Location.local) synchronized (localSearches) {return localSearches.size();} - if (location == Location.remote) synchronized (remoteSearches) {return remoteSearches.size();} + public static long size(final Location location) { + if (location == Location.local) synchronized (localSearches) {return localCount + localSearches.size();} + if (location == Location.remote) synchronized (remoteSearches) {return remoteCount + remoteSearches.size();} return 0; } @@ -155,10 +158,6 @@ public class AccessTracker { public static void addToDump(String querystring, String resultcount) { addToDump(querystring, resultcount, new Date()); - if (lastLogDump + DUMP_PERIOD < System.currentTimeMillis()) { - lastLogDump = System.currentTimeMillis(); - dumpLog(); - } } public static void addToDump(String querystring, String resultcount, Date d) { @@ -173,12 +172,21 @@ public class AccessTracker { synchronized (log) { log.add(sb.toString()); } + if (log.size() > DUMP_SIZE || lastLogDump + DUMP_PERIOD < System.currentTimeMillis()) { + dumpLog(); + } } public static void dumpLog() { + lastLogDump = System.currentTimeMillis(); + localCount += localSearches.size(); while (!localSearches.isEmpty()) { addToDump(localSearches.removeFirst(), 0); } + remoteCount += remoteSearches.size(); + while (!remoteSearches.isEmpty()) { + addToDump(remoteSearches.removeFirst(), 0); + } Thread t = new Thread() { @Override public void run() {