Author: toad
Date: 2006-08-12 23:41:50 +0000 (Sat, 12 Aug 2006)
New Revision: 10056

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/support/SimpleFieldSet.java
   
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
   trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
Log:
940: All load limiting related data is now persistent.
Also up build number for previous changes.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-08-12 23:34:17 UTC (rev 
10055)
+++ trunk/freenet/src/freenet/node/Node.java    2006-08-12 23:41:50 UTC (rev 
10056)
@@ -1214,23 +1214,23 @@
                Logger.minor(this, "Read throttleFS:\n"+throttleFS);

                // Guesstimates. Hopefully well over the reality.
-               localChkFetchBytesSentAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
-               localSskFetchBytesSentAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
-               localChkInsertBytesSentAverage = new 
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE);
-               localSskInsertBytesSentAverage = new 
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE);
-               localChkFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE);
-               localSskFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE);
-               localChkInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(1024, 180000, 0.0, Long.MAX_VALUE);
-               localSskInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE);
+               localChkFetchBytesSentAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null 
? null : throttleFS.subset("LocalChkFetchBytesSentAverage"));
+               localSskFetchBytesSentAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null 
? null : throttleFS.subset("LocalSskFetchBytesSentAverage"));
+               localChkInsertBytesSentAverage = new 
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("LocalChkInsertBytesSentAverage"));
+               localSskInsertBytesSentAverage = new 
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("LocalSskInsertBytesSentAverage"));
+               localChkFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("LocalChkFetchBytesReceivedAverage"));
+               localSskFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(2048, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("LocalSskFetchBytesReceivedAverage"));
+               localChkInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(1024, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("LocalChkInsertBytesReceivedAverage"));
+               localSskInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(500, 180000, 0.0, Long.MAX_VALUE, throttleFS == null 
? null : throttleFS.subset("LocalChkInsertBytesReceivedAverage"));

-               remoteChkFetchBytesSentAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteSskFetchBytesSentAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteChkInsertBytesSentAverage = new 
TimeDecayingRunningAverage(32768+32768+1024, 180000, 0.0, Long.MAX_VALUE);
-               remoteSskInsertBytesSentAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteChkFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteSskFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(2048+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteChkInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE);
-               remoteSskInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE);
+               remoteChkFetchBytesSentAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteChkFetchBytesSentAverage"));
+               remoteSskFetchBytesSentAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteSskFetchBytesSentAverage"));
+               remoteChkInsertBytesSentAverage = new 
TimeDecayingRunningAverage(32768+32768+1024, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteChkInsertBytesSentAverage"));
+               remoteSskInsertBytesSentAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteSskInsertBytesSentAverage"));
+               remoteChkFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteChkFetchBytesReceivedAverage"));
+               remoteSskFetchBytesReceivedAverage = new 
TimeDecayingRunningAverage(2048+500, 180000, 0.0, Long.MAX_VALUE, throttleFS == 
null ? null : throttleFS.subset("RemoteSskFetchBytesReceivedAverage"));
+               remoteChkInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(32768+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteChkInsertBytesReceivedAverage"));
+               remoteSskInsertBytesReceivedAverage = new 
TimeDecayingRunningAverage(1024+1024+500, 180000, 0.0, Long.MAX_VALUE, 
throttleFS == null ? null : 
throttleFS.subset("RemoteSskInsertBytesReceivedAverage"));

                clientCore = new NodeClientCore(this, config, nodeConfig, 
nodeDir, portNumber, sortOrder, throttleFS == null ? null : 
throttleFS.subset("RequestStarters"));

@@ -2820,6 +2820,23 @@
        private SimpleFieldSet persistThrottlesToFieldSet() {
                SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("RequestStarters", 
clientCore.requestStarters.persistToFieldSet());
+               fs.put("RemoteChkFetchBytesSentAverage", 
remoteChkFetchBytesSentAverage.exportFieldSet());
+               fs.put("RemoteSskFetchBytesSentAverage", 
remoteSskFetchBytesSentAverage.exportFieldSet());
+               fs.put("RemoteChkInsertBytesSentAverage", 
remoteChkInsertBytesSentAverage.exportFieldSet());
+               fs.put("RemoteSskInsertBytesSentAverage", 
remoteSskInsertBytesSentAverage.exportFieldSet());
+               fs.put("RemoteChkFetchBytesReceivedAverage", 
remoteChkFetchBytesReceivedAverage.exportFieldSet());
+               fs.put("RemoteSskFetchBytesReceivedAverage", 
remoteSskFetchBytesReceivedAverage.exportFieldSet());
+               fs.put("RemoteChkInsertBytesReceivedAverage", 
remoteChkInsertBytesReceivedAverage.exportFieldSet());
+               fs.put("RemoteSskInsertBytesReceivedAverage", 
remoteSskInsertBytesReceivedAverage.exportFieldSet());
+               fs.put("LocalChkFetchBytesSentAverage", 
localChkFetchBytesSentAverage.exportFieldSet());
+               fs.put("LocalSskFetchBytesSentAverage", 
localSskFetchBytesSentAverage.exportFieldSet());
+               fs.put("LocalChkInsertBytesSentAverage", 
localChkInsertBytesSentAverage.exportFieldSet());
+               fs.put("LocalSskInsertBytesSentAverage", 
localSskInsertBytesSentAverage.exportFieldSet());
+               fs.put("LocalChkFetchBytesReceivedAverage", 
localChkFetchBytesReceivedAverage.exportFieldSet());
+               fs.put("LocalSskFetchBytesReceivedAverage", 
localSskFetchBytesReceivedAverage.exportFieldSet());
+               fs.put("LocalChkInsertBytesReceivedAverage", 
localChkInsertBytesReceivedAverage.exportFieldSet());
+               fs.put("LocalSskInsertBytesReceivedAverage", 
localSskInsertBytesReceivedAverage.exportFieldSet());
+
                // FIXME persist the rest
                return fs;
        }

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-12 23:34:17 UTC (rev 
10055)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-12 23:41:50 UTC (rev 
10056)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 939;
+       private static final int buildNumber = 940;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 920;

Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java       2006-08-12 
23:34:17 UTC (rev 10055)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java       2006-08-12 
23:41:50 UTC (rev 10056)
@@ -475,4 +475,8 @@
                }
        }

+       public boolean getBoolean(String key, boolean def) {
+               return Fields.stringToBool(get(key), def);
+       }
+
 }

Modified: 
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java
===================================================================
--- 
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java 
    2006-08-12 23:34:17 UTC (rev 10055)
+++ 
trunk/freenet/src/freenet/support/math/BootstrappingDecayingRunningAverage.java 
    2006-08-12 23:41:50 UTC (rev 10056)
@@ -149,7 +149,7 @@
         return reports;
     }

-       public SimpleFieldSet exportFieldSet() {
+       public synchronized SimpleFieldSet exportFieldSet() {
                SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "BootstrappingDecayingRunningAverage");
                fs.put("CurrentValue", currentValue);

Modified: trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java
===================================================================
--- trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java      
2006-08-12 23:34:17 UTC (rev 10055)
+++ trunk/freenet/src/freenet/support/math/TimeDecayingRunningAverage.java      
2006-08-12 23:41:50 UTC (rev 10056)
@@ -5,6 +5,7 @@
 import java.io.IOException;

 import freenet.support.Logger;
+import freenet.support.SimpleFieldSet;

 /**
  * Time decaying running average.
@@ -64,6 +65,31 @@
                                new Exception("debug"));
     }

+    public TimeDecayingRunningAverage(double defaultValue, long halfLife,
+            double min, double max, SimpleFieldSet fs) {
+       curValue = defaultValue;
+        this.defaultValue = defaultValue;
+        started = false;
+        this.halfLife = halfLife;
+        createdTime = lastReportTime = System.currentTimeMillis();
+        this.minReport = min;
+        this.maxReport = max;
+        totalReports = 0;
+        logDEBUG = Logger.shouldLog(Logger.DEBUG, this);
+        if(logDEBUG)
+               Logger.debug(this, "Created "+this,
+                               new Exception("debug"));
+        if(fs != null) {
+               started = fs.getBoolean("Started", false);
+               if(started) {
+                       curValue = fs.getDouble("CurrentValue", curValue);
+                       totalReports = fs.getLong("TotalReports", 0);
+                       long uptime = fs.getLong("Uptime", 0);
+                       createdTime = System.currentTimeMillis() - uptime;
+               }
+        }
+    }
+    
     public TimeDecayingRunningAverage(double defaultValue, double halfLife, 
double min, double max, DataInputStream dis) throws IOException {
         int m = dis.readInt();
         if(m != MAGIC) throw new IOException("Invalid magic "+m);
@@ -168,4 +194,14 @@
        public synchronized long lastReportTime() {
                return lastReportTime;
        }
+
+       public synchronized SimpleFieldSet exportFieldSet() {
+               SimpleFieldSet fs = new SimpleFieldSet();
+               fs.put("Type", "TimeDecayingRunningAverage");
+               fs.put("CurrentValue", curValue);
+               fs.put("Started", started);
+               fs.put("TotalReports", totalReports);
+               fs.put("Uptime", System.currentTimeMillis() - createdTime);
+               return fs;
+       }
 }


Reply via email to