* reenable DHT if yet enough memory is available

* reset treshold on reconfiguratoin
(thanks to sixcooler)

* display status message in web interface

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6562 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
lotus 15 years ago
parent 0752634b8b
commit eac2daf2e8

@ -93,6 +93,13 @@
</dd> </dd>
#(/warningDiskSpaceLow)# #(/warningDiskSpaceLow)#
#(warningMemoryLow)#::
<dt class="hintIcon"><img src="env/grafics/bad.png" width="32" height="32" alt="bad"/></dt>
<dd class="hint">Free memory is lower than #[minSpace]#. DHT has been disabled. Please fix
it as soon as possible and restart YaCy.
</dd>
#(/warningMemoryLow)#
<!-- hints --> <!-- hints -->
#(hintVersionAvailable)#:: #(hintVersionAvailable)#::

@ -133,13 +133,20 @@ public class Status {
prop.put("unrestrictedLocalAccess", 1); prop.put("unrestrictedLocalAccess", 1);
} }
// free disk space // resource observer status
if ((adminaccess) && (!sb.observer.getDisksOK())) if (adminaccess) {
{ if (!sb.observer.getDisksOK()){
final String minFree = Formatter.bytesToString(sb.observer.getMinFreeDiskSpace()); final String minFree = Formatter.bytesToString(sb.observer.getMinFreeDiskSpace());
prop.put("warningDiskSpaceLow", "1"); prop.put("warningDiskSpaceLow", "1");
prop.put("warningDiskSpaceLow_minSpace", minFree); 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 // version information

@ -56,6 +56,7 @@ public final class ResourceObserver {
private int checkMemoryUsageCount; private int checkMemoryUsageCount;
private int disksFree; private int disksFree;
private int memoryFree; private int memoryFree;
private boolean disabledDHT = false;
/** /**
* The ResourceObserver checks the resources * The ResourceObserver checks the resources
@ -106,7 +107,7 @@ public final class ResourceObserver {
* checks the resources and pauses crawls if necessary * checks the resources and pauses crawls if necessary
*/ */
public void resourceObserverJob() { public void resourceObserverJob() {
MemoryControl.setDHTkbytes(sb.getConfigLong(SwitchboardConstants.MEMORY_ACCEPTDHT, 0)); MemoryControl.setDHTkbytes(getMinFreeMemory());
checkDiskUsageCount++; checkDiskUsageCount++;
checkMemoryUsageCount++; checkMemoryUsageCount++;
@ -136,11 +137,19 @@ public final class ResourceObserver {
log.logInfo("disabling index receive"); log.logInfo("disabling index receive");
sb.setConfig(SwitchboardConstants.INDEX_RECEIVE_ALLOW, false); sb.setConfig(SwitchboardConstants.INDEX_RECEIVE_ALLOW, false);
sb.peers.mySeed().setFlagAcceptRemoteIndex(false); sb.peers.mySeed().setFlagAcceptRemoteIndex(false);
disabledDHT = true;
} }
} }
else { 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"); log.logInfo("run completed; everything in order");
}
else else
log.logInfo("The observer is out of order: " + DiskSpace.getErrorMessage()); 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 () { public long getMinFreeDiskSpace () {
return sb.getConfigLong(SwitchboardConstants.DISK_FREE, 3000) /* MiB */ * 1024L * 1024L; 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 () { public long getMinFreeDiskSpace_hardlimit () {
return sb.getConfigLong(SwitchboardConstants.DISK_FREE_HARDLIMIT, 100) /* MiB */ * 1024L * 1024L; 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 * returns the amount of disk space available
* @return <ul> * @return <ul>

@ -182,10 +182,12 @@ public class MemoryControl {
public static void setDHTallowed() { public static void setDHTallowed() {
allowDHT = true; allowDHT = true;
DHTtresholdCount = 0;
} }
public static void setDHTkbytes(final long kbytes) { public static void setDHTkbytes(final long kbytes) {
DHTkbytes = kbytes; DHTkbytes = kbytes;
DHTtresholdCount = 0;
} }
private static void checkDHTrule(final long available) { private static void checkDHTrule(final long available) {
@ -202,7 +204,8 @@ public class MemoryControl {
log.logInfo("checkDHTrule: below treshold; tresholdCount: " + DHTtresholdCount + "; allowDHT: " + allowDHT); log.logInfo("checkDHTrule: below treshold; tresholdCount: " + DHTtresholdCount + "; allowDHT: " + allowDHT);
} }
//allowDHT = ((available >> 10) < DHTkbytes) ? false : true; // stupid else if (!allowDHT && (available >> 10) > (DHTkbytes * 2L)) // we were wrong!
setDHTallowed();
} }
/** /**

Loading…
Cancel
Save