* ProfileOrganizer:
- Don't require a peer to be high-capacity to be well-integrated (not used for anything right now, but want to get it right for possible floodfill verification) - Don't fall back to median for high-capacity threshold if the mean is higher than the median, this prevents frequent large high-capacity counts - Fix high-capacity selector that picked one too many * Console: put well-integrated count back in the summary
This commit is contained in:
@ -17,7 +17,7 @@ import net.i2p.CoreVersion;
|
||||
public class RouterVersion {
|
||||
public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $";
|
||||
public final static String VERSION = "0.6.1.32";
|
||||
public final static long BUILD = 3;
|
||||
public final static long BUILD = 4;
|
||||
public static void main(String args[]) {
|
||||
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
||||
System.out.println("Router ID: " + RouterVersion.ID);
|
||||
|
@ -653,7 +653,10 @@ public class ProfileOrganizer {
|
||||
locked_calculateCapacityThreshold(totalCapacity, reordered);
|
||||
locked_calculateSpeedThreshold(reordered);
|
||||
|
||||
_thresholdIntegrationValue = 1.0d * avg(totalIntegration, reordered.size());
|
||||
if (totalIntegration > 0)
|
||||
_thresholdIntegrationValue = 1.0d * avg(totalIntegration, reordered.size());
|
||||
else // Make nobody rather than everybody well-integrated
|
||||
_thresholdIntegrationValue = 1.0d;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -685,7 +688,7 @@ public class ProfileOrganizer {
|
||||
numExceedingMean++;
|
||||
if (cur == reordered.size()/2)
|
||||
thresholdAtMedian = val;
|
||||
if (cur == minHighCapacityPeers)
|
||||
if (cur == minHighCapacityPeers - 1)
|
||||
thresholdAtMinHighCap = val;
|
||||
if (cur == reordered.size() -1)
|
||||
thresholdAtLowest = val;
|
||||
@ -698,12 +701,20 @@ public class ProfileOrganizer {
|
||||
_log.info("Our average capacity is doing well [" + meanCapacity
|
||||
+ "], and includes " + numExceedingMean);
|
||||
_thresholdCapacityValue = meanCapacity;
|
||||
// else if mean > median && reordered.size > minHighCapacitiyPeers then threshold = reordered.get(minHighCapacity).getCapacityValue()
|
||||
} else if (meanCapacity > thresholdAtMedian &&
|
||||
reordered.size()/2 > minHighCapacityPeers) {
|
||||
// avg > median, get the min High Cap peers
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Our average capacity [" + meanCapacity + "] is greater than the median,"
|
||||
+ " so threshold is that reqd to get the min high cap peers " + thresholdAtMinHighCap);
|
||||
_thresholdCapacityValue = thresholdAtMinHighCap;
|
||||
} else if (reordered.size()/2 >= minHighCapacityPeers) {
|
||||
// ok mean is skewed low, but we still have enough to use the median
|
||||
// We really don't want to be here, since the default is 5.0 and the median
|
||||
// is inevitably 5.01 or so.
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Our average capacity is skewed under the median [" + meanCapacity
|
||||
+ "], so use the median threshold " + thresholdAtMedian);
|
||||
_log.info("Our average capacity [" + meanCapacity + "] is skewed under the median,"
|
||||
+ " so use the median threshold " + thresholdAtMedian);
|
||||
_thresholdCapacityValue = thresholdAtMedian;
|
||||
} else {
|
||||
// our average is doing well, but not enough peers
|
||||
@ -979,14 +990,19 @@ public class ProfileOrganizer {
|
||||
}
|
||||
}
|
||||
|
||||
if (_thresholdIntegrationValue <= profile.getIntegrationValue()) {
|
||||
_wellIntegratedPeers.put(profile.getPeer(), profile);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Integrated: \t" + profile.getPeer().toBase64());
|
||||
}
|
||||
} else {
|
||||
// not high capacity, but not failing (yet)
|
||||
}
|
||||
// We aren't using the well-integrated list yet...
|
||||
// But by observation, the floodfill peers are often not in the
|
||||
// high-capacity group, so let's not require a peer to be high-capactiy
|
||||
// to call him well-integrated.
|
||||
// This could be used later to see if a floodfill peer is for real.
|
||||
if (_thresholdIntegrationValue <= profile.getIntegrationValue()) {
|
||||
_wellIntegratedPeers.put(profile.getPeer(), profile);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Integrated: \t" + profile.getPeer().toBase64());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user