Author: toad
Date: 2005-11-18 14:52:39 +0000 (Fri, 18 Nov 2005)
New Revision: 7558

Modified:
   trunk/freenet/src/freenet/node/InsertSender.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/RequestSender.java
   trunk/freenet/src/freenet/node/Version.java
Log:
193: (mandatory)
Various minor bugfixes re load balancing.
Revert to CORRECT formula dist = dist / (1.0 - pFailure).
So if a node has 5% loss, its distances get a bit bigger, so it is effectively 
more specialized.

Modified: trunk/freenet/src/freenet/node/InsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertSender.java    2005-11-18 12:33:27 UTC 
(rev 7557)
+++ trunk/freenet/src/freenet/node/InsertSender.java    2005-11-18 14:52:39 UTC 
(rev 7558)
@@ -316,10 +316,12 @@

         if(status == REJECTED_OVERLOAD) {
                node.getInsertThrottle().requestRejectedOverload();
-               next.insertRejectedOverload();
+               if(next != null)
+                       next.insertRejectedOverload();
         } else if(status == SUCCESS || status == ROUTE_NOT_FOUND) {
                
node.getInsertThrottle().requestCompleted(System.currentTimeMillis() - 
startTime);
-               next.insertDidNotRejectOverload();
+               if(next != null)
+                       next.insertDidNotRejectOverload();
         }

         synchronized(this) {

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2005-11-18 12:33:27 UTC 
(rev 7557)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2005-11-18 14:52:39 UTC 
(rev 7558)
@@ -266,7 +266,9 @@
     static double distance(PeerNode p, double loc) {
        double d = distance(p.getLocation().getValue(), loc);
        double pSummaryFailure = p.getPRejectedOverload();
-       return d * pSummaryFailure;
+       double denom = 1.0 - pSummaryFailure;
+       if(denom == 0.0) denom = 0.000001;
+       return d / denom;
     }

     /**

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2005-11-18 12:33:27 UTC 
(rev 7557)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2005-11-18 14:52:39 UTC 
(rev 7558)
@@ -303,10 +303,12 @@

         if(status == REJECTED_OVERLOAD) {
                node.getRequestThrottle().requestRejectedOverload();
-               next.rejectedOverload();
+               if(next != null)
+                       next.rejectedOverload();
         } else if(status == SUCCESS || status == ROUTE_NOT_FOUND || status == 
DATA_NOT_FOUND || status == VERIFY_FAILURE) {
                
node.getRequestThrottle().requestCompleted(System.currentTimeMillis() - 
startTime);
-               next.didNotRejectOverload();
+               if(next != null)
+                       next.didNotRejectOverload();
         }

         synchronized(this) {

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-18 12:33:27 UTC (rev 
7557)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-18 14:52:39 UTC (rev 
7558)
@@ -20,10 +20,10 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       public static final int buildNumber = 191;
+       public static final int buildNumber = 193;

        /** Oldest build of Fred we will talk to */
-       public static final int lastGoodBuild = 191;
+       public static final int lastGoodBuild = 193;

        /** The highest reported build of fred */
        public static int highestSeenBuild = buildNumber;


Reply via email to