Author: nextgens
Date: 2007-03-25 13:33:50 +0000 (Sun, 25 Mar 2007)
New Revision: 12371

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   trunk/freenet/src/freenet/node/ConfigurablePersister.java
   trunk/freenet/src/freenet/node/NodeClientCore.java
   trunk/freenet/src/freenet/node/NodeStats.java
   trunk/freenet/src/freenet/node/Persister.java
Log:
Spare YetAnotherThread (Persister)

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2007-03-25 13:23:43 UTC (rev 12370)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2007-03-25 13:33:50 UTC (rev 12371)
@@ -16,7 +16,6 @@
 import freenet.client.Metadata;
 import freenet.client.MetadataParseException;
 import freenet.client.SplitfileBlock;
-import freenet.client.StandardOnionFECCodec;
 import 
freenet.client.StandardOnionFECCodec.StandardOnionFECCodecEncoderCallback;
 import freenet.keys.CHKBlock;
 import freenet.keys.ClientCHK;

Modified: trunk/freenet/src/freenet/node/ConfigurablePersister.java
===================================================================
--- trunk/freenet/src/freenet/node/ConfigurablePersister.java   2007-03-25 
13:23:43 UTC (rev 12370)
+++ trunk/freenet/src/freenet/node/ConfigurablePersister.java   2007-03-25 
13:33:50 UTC (rev 12371)
@@ -11,8 +11,8 @@
 public class ConfigurablePersister extends Persister {

        public ConfigurablePersister(Persistable t, SubConfig nodeConfig, 
String optionName, 
-                       String defaultFilename, int sortOrder, boolean expert, 
boolean forceWrite, String shortDesc, String longDesc) throws NodeInitException 
{
-               super(t);
+                       String defaultFilename, int sortOrder, boolean expert, 
boolean forceWrite, String shortDesc, String longDesc, PacketSender ps) throws 
NodeInitException {
+               super(t, ps);
                nodeConfig.register(optionName, defaultFilename, sortOrder, 
expert, forceWrite, shortDesc, longDesc, new StringCallback() {

                        public String get() {
@@ -31,7 +31,6 @@
                } catch (InvalidConfigValueException e2) {
                        throw new 
NodeInitException(Node.EXIT_THROTTLE_FILE_ERROR, e2.getMessage());
                }
-               
        }

        private void setThrottles(String val) throws 
InvalidConfigValueException {

Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java  2007-03-25 13:23:43 UTC 
(rev 12370)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java  2007-03-25 13:33:50 UTC 
(rev 12371)
@@ -122,7 +122,7 @@
                logMINOR = Logger.shouldLog(Logger.MINOR, this);

                persister = new ConfigurablePersister(this, nodeConfig, 
"clientThrottleFile", "client-throttle.dat", sortOrder++, true, false, 
-                               "File to store client statistics in", "File to 
store client throttling statistics in (used to decide how often to send 
requests)");
+                               "File to store client statistics in", "File to 
store client throttling statistics in (used to decide how often to send 
requests)", node.ps);

                SimpleFieldSet throttleFS = persister.read();


Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java       2007-03-25 13:23:43 UTC 
(rev 12370)
+++ trunk/freenet/src/freenet/node/NodeStats.java       2007-03-25 13:33:50 UTC 
(rev 12371)
@@ -235,8 +235,8 @@
                freeHeapPercentThreshold = 
statsConfig.getInt("freeHeapPercentThreshold");

                persister = new ConfigurablePersister(this, statsConfig, 
"nodeThrottleFile", "node-throttle.dat", sortOrder++, true, false, 
-                               "File to store node statistics in", "File to 
store node statistics in (not client statistics, and these are used to decide 
whether to accept requests so please don't delete)");
-               
+                               "File to store node statistics in", "File to 
store node statistics in (not client statistics, and these are used to decide 
whether to accept requests so please don't delete)", node.ps);
+
                SimpleFieldSet throttleFS = persister.read();

                if(throttleFS == null)

Modified: trunk/freenet/src/freenet/node/Persister.java
===================================================================
--- trunk/freenet/src/freenet/node/Persister.java       2007-03-25 13:23:43 UTC 
(rev 12370)
+++ trunk/freenet/src/freenet/node/Persister.java       2007-03-25 13:33:50 UTC 
(rev 12371)
@@ -15,18 +15,21 @@

 class Persister implements Runnable {

-       Persister(Persistable t, File persistTemp, File persistTarget) {
+       Persister(Persistable t, File persistTemp, File persistTarget, 
PacketSender ps) {
                this.persistable = t;
                this.persistTemp = persistTemp;
                this.persistTarget = persistTarget;
+               this.ps = ps;
        }

        // Subclass must set the others later
-       protected Persister(Persistable t) {
+       protected Persister(Persistable t, PacketSender ps) {
                this.persistable = t;
+               this.ps = ps;
        }

        final Persistable persistable;
+       private final PacketSender ps;
        File persistTemp;
        File persistTarget;

@@ -37,26 +40,18 @@
        }

        public void run() {
-               while(true) {
-                       try {
-                               persistThrottle();
-                       } catch (OutOfMemoryError e) {
-                               OOMHandler.handleOOM(e);
-                               System.err.println("Will restart 
ThrottlePersister...");
-                       } catch (Throwable t) {
-                               Logger.error(this, "Caught in 
ThrottlePersister: "+t, t);
-                               System.err.println("Caught in 
ThrottlePersister: "+t);
-                               t.printStackTrace();
-                               System.err.println("Will restart 
ThrottlePersister...");
-                       }
-                       try {
-                               synchronized(this) {
-                                       wait(60*1000);
-                               }
-                       } catch (InterruptedException e) {
-                               // Maybe it's time to wake up?
-                       }
+               try {
+                       persistThrottle();
+               } catch (OutOfMemoryError e) {
+                       OOMHandler.handleOOM(e);
+                       System.err.println("Will restart ThrottlePersister...");
+               } catch (Throwable t) {
+                       Logger.error(this, "Caught in ThrottlePersister: "+t, 
t);
+                       System.err.println("Caught in ThrottlePersister: "+t);
+                       t.printStackTrace();
+                       System.err.println("Will restart ThrottlePersister...");
                }
+               ps.queueTimedJob(this, 60*1000);
        }

        public void persistThrottle() {
@@ -125,9 +120,7 @@
        }

        public void start() {
-               Thread t = new Thread(this, "Persister for "+persistable);
-               t.setDaemon(true);
-               t.start();
+               run();
        }

 }


Reply via email to