diff --git a/htroot/Status.html b/htroot/Status.html index dcf17a3e2..8265e176e 100644 --- a/htroot/Status.html +++ b/htroot/Status.html @@ -93,6 +93,13 @@ #(/warningDiskSpaceLow)# + #(warningMemoryLow)#:: +
bad
+
Free memory is lower than #[minSpace]#. DHT has been disabled. Please fix + it as soon as possible and restart YaCy. +
+ #(/warningMemoryLow)# + #(hintVersionAvailable)#:: diff --git a/htroot/Status.java b/htroot/Status.java index b7d96b7fa..8e897b406 100644 --- a/htroot/Status.java +++ b/htroot/Status.java @@ -133,13 +133,20 @@ public class Status { prop.put("unrestrictedLocalAccess", 1); } - // free disk space - if ((adminaccess) && (!sb.observer.getDisksOK())) - { - final String minFree = Formatter.bytesToString(sb.observer.getMinFreeDiskSpace()); - prop.put("warningDiskSpaceLow", "1"); - prop.put("warningDiskSpaceLow_minSpace", minFree); - } + // resource observer status + if (adminaccess) { + if (!sb.observer.getDisksOK()){ + final String minFree = Formatter.bytesToString(sb.observer.getMinFreeDiskSpace()); + prop.put("warningDiskSpaceLow", "1"); + prop.put("warningDiskSpaceLow_minSpace", minFree); + } + if (!sb.observer.getMemoryOK()){ + final String minFree = Formatter.bytesToString(sb.observer.getMinFreeMemory() * 1024L); + prop.put("warningMemoryLow", "1"); + prop.put("warningMemoryLow_minSpace", minFree); + } + + } // version information diff --git a/source/de/anomic/crawler/ResourceObserver.java b/source/de/anomic/crawler/ResourceObserver.java index af9ba5989..9f24eff9f 100644 --- a/source/de/anomic/crawler/ResourceObserver.java +++ b/source/de/anomic/crawler/ResourceObserver.java @@ -56,6 +56,7 @@ public final class ResourceObserver { private int checkMemoryUsageCount; private int disksFree; private int memoryFree; + private boolean disabledDHT = false; /** * The ResourceObserver checks the resources @@ -106,7 +107,7 @@ public final class ResourceObserver { * checks the resources and pauses crawls if necessary */ public void resourceObserverJob() { - MemoryControl.setDHTkbytes(sb.getConfigLong(SwitchboardConstants.MEMORY_ACCEPTDHT, 0)); + MemoryControl.setDHTkbytes(getMinFreeMemory()); checkDiskUsageCount++; checkMemoryUsageCount++; @@ -136,11 +137,19 @@ public final class ResourceObserver { log.logInfo("disabling index receive"); sb.setConfig(SwitchboardConstants.INDEX_RECEIVE_ALLOW, false); sb.peers.mySeed().setFlagAcceptRemoteIndex(false); + disabledDHT = true; } } else { - if (DiskSpace.isUsable()) + if (DiskSpace.isUsable()) { + if(disabledDHT) { // we were wrong! + log.logInfo("enabling index receive"); + sb.setConfig(SwitchboardConstants.INDEX_RECEIVE_ALLOW, true); + sb.peers.mySeed().setFlagAcceptRemoteIndex(true); + disabledDHT = false; + } log.logInfo("run completed; everything in order"); + } else log.logInfo("The observer is out of order: " + DiskSpace.getErrorMessage()); } @@ -161,19 +170,26 @@ public final class ResourceObserver { } /** - * @return amount of space (MiB) that should be kept free + * @return amount of space (bytes) that should be kept free */ public long getMinFreeDiskSpace () { return sb.getConfigLong(SwitchboardConstants.DISK_FREE, 3000) /* MiB */ * 1024L * 1024L; } /** - * @return amount of space (MiB) that should at least be kept free + * @return amount of space (bytes) that should at least be kept free */ public long getMinFreeDiskSpace_hardlimit () { return sb.getConfigLong(SwitchboardConstants.DISK_FREE_HARDLIMIT, 100) /* MiB */ * 1024L * 1024L; } + /** + * @return amount of space (KiB) that should at least be free + */ + public long getMinFreeMemory() { + return sb.getConfigLong(SwitchboardConstants.MEMORY_ACCEPTDHT, 0); + } + /** * returns the amount of disk space available * @return