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();
}
}