Author: toad
Date: 2006-08-03 15:08:14 +0000 (Thu, 03 Aug 2006)
New Revision: 9859
Modified:
trunk/freenet/src/freenet/client/async/ClientPutter.java
trunk/freenet/src/freenet/client/async/SingleFileInserter.java
trunk/freenet/src/freenet/client/async/SplitFileInserter.java
trunk/freenet/src/freenet/node/PacketSender.java
trunk/freenet/src/freenet/node/Version.java
Log:
920: Fix a major, but non-progressive, memory leak. MANDATORY AT MIDNIGHT ON
TUESDAY GMT.
Modified: trunk/freenet/src/freenet/client/async/ClientPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientPutter.java 2006-08-03
15:04:00 UTC (rev 9858)
+++ trunk/freenet/src/freenet/client/async/ClientPutter.java 2006-08-03
15:08:14 UTC (rev 9859)
@@ -27,7 +27,7 @@
private FreenetURI uri;
/** SimpleFieldSet containing progress information from last startup.
* Will be progressively cleared during startup. */
- private final SimpleFieldSet oldProgress;
+ private SimpleFieldSet oldProgress;
/**
* @param client The object to call back when we complete, or don't.
@@ -75,6 +75,7 @@
}
if(cancel) {
onFailure(new
InserterException(InserterException.CANCELLED), null);
+ oldProgress = null;
return;
}
synchronized(this) {
@@ -82,10 +83,12 @@
}
if(cancel) {
onFailure(new
InserterException(InserterException.CANCELLED), null);
+ oldProgress = null;
return;
}
((SingleFileInserter)currentState).start(oldProgress);
synchronized(this) {
+ oldProgress = null;
cancel = cancelled;
}
if(cancel) {
@@ -96,6 +99,7 @@
Logger.error(this, "Failed to start insert: "+e, e);
synchronized(this) {
finished = true;
+ oldProgress = null;
currentState = null;
}
// notify the client that the insert could not even be
started
@@ -110,6 +114,7 @@
synchronized(this) {
finished = true;
currentState = null;
+ oldProgress = null;
}
client.onSuccess(this);
}
@@ -118,6 +123,7 @@
synchronized(this) {
finished = true;
currentState = null;
+ oldProgress = null;
}
client.onFailure(e, this);
}
Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2006-08-03 15:04:00 UTC (rev 9858)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2006-08-03 15:08:14 UTC (rev 9859)
@@ -294,6 +294,7 @@
throw new ResumeException("No
SplitFileInserter");
ClientPutState newSFI, newMetaPutter = null;
newSFI = new SplitFileInserter(parent, this,
block.clientMetadata, ctx, getCHKOnly, metadata, token,
insertAsArchiveManifest, sfiFS);
+ fs.remove("SplitFileInserter");
SimpleFieldSet metaFS = fs.subset("MetadataPutter");
if(metaFS != null) {
try {
@@ -309,6 +310,7 @@
// Ignore, it will be reconstructed
later
}
}
+ fs.remove("MetadataPutter");
synchronized(this) {
sfi = newSFI;
metadataPutter = newMetaPutter;
Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2006-08-03 15:04:00 UTC (rev 9858)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java
2006-08-03 15:08:14 UTC (rev 9859)
@@ -159,7 +159,9 @@
int checkBlocks = 0;
for(int i=0;i<segments.length;i++) {
- SimpleFieldSet segment =
segFS.subset(Integer.toString(i));
+ String index = Integer.toString(i);
+ SimpleFieldSet segment = segFS.subset(index);
+ segFS.remove(index);
if(segment == null) throw new ResumeException("No
segment "+i);
segments[i] = new SplitFileInserterSegment(this,
segment, splitfileAlgorithm, ctx, getCHKOnly, i);
dataBlocks += segments[i].countDataBlocks();
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2006-08-03 15:04:00 UTC
(rev 9858)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2006-08-03 15:08:14 UTC
(rev 9859)
@@ -310,7 +310,7 @@
}
}
- if(jobsToRun != null)
+ if(jobsToRun != null) {
for(int i=0;i<jobsToRun.size();i++) {
Runnable r = (Runnable) jobsToRun.get(i);
Logger.minor(this, "Running "+r);
@@ -327,6 +327,7 @@
t.start();
}
}
+ }
long sleepTime = nextActionTime - now;
// 100ms maximum sleep time - same as the maximum coalescing delay
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-03 15:04:00 UTC (rev
9858)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-03 15:08:14 UTC (rev
9859)
@@ -18,12 +18,12 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 919;
+ private static final int buildNumber = 920;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 870;
- private static final int newLastGoodBuild = 874;
- private static final long transitionTime = 1153094400000L; // 0:00 GMT
17/07/06
+ private static final int oldLastGoodBuild = 874;
+ private static final int newLastGoodBuild = 920;
+ private static final long transitionTime = 1154995200L*1000L; //
midnight tuesday 8/08/06.
public static final int buildNumber() {
return buildNumber;