Author: nextgens
Date: 2007-02-28 18:50:58 +0000 (Wed, 28 Feb 2007)
New Revision: 11928
Modified:
trunk/freenet/src/freenet/client/InsertBlock.java
trunk/freenet/src/freenet/client/async/SingleFileInserter.java
Log:
Free the data as soon as we don't need it anymore!
might require some testing though
Modified: trunk/freenet/src/freenet/client/InsertBlock.java
===================================================================
--- trunk/freenet/src/freenet/client/InsertBlock.java 2007-02-28 17:25:08 UTC
(rev 11927)
+++ trunk/freenet/src/freenet/client/InsertBlock.java 2007-02-28 18:50:58 UTC
(rev 11928)
@@ -28,5 +28,8 @@
public Bucket getData() {
return data;
}
-
+
+ public void free(){
+ data.free();
+ }
}
Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2007-02-28 17:25:08 UTC (rev 11927)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2007-02-28 18:50:58 UTC (rev 11928)
@@ -391,7 +391,11 @@
if(logMINOR) Logger.minor(this, "onSuccess("+state+")
for "+this);
boolean lateStart = false;
synchronized(this) {
- if(finished) return;
+ if(finished){
+ if(freeData)
+ block.free();
+ return;
+ }
if(state == sfi) {
if(logMINOR) Logger.minor(this,
"Splitfile insert succeeded for "+this+" : "+state);
splitInsertSuccess = true;
@@ -421,7 +425,11 @@
public void onFailure(InserterException e, ClientPutState
state) {
synchronized(this) {
- if(finished) return;
+ if(finished){
+ if(freeData)
+ block.free();
+ return;
+ }
}
fail(e);
}
@@ -517,7 +525,11 @@
ClientPutState oldSFI = null;
ClientPutState oldMetadataPutter = null;
synchronized(this) {
- if(finished) return;
+ if(finished){
+ if(freeData)
+ block.free();
+ return;
+ }
finished = true;
oldSFI = sfi;
oldMetadataPutter = metadataPutter;
@@ -552,6 +564,9 @@
oldSFI.cancel();
if(oldMetadataPutter != null)
oldMetadataPutter.cancel();
+
+ if(freeData)
+ block.free();
}
public void onBlockSetFinished(ClientPutState state) {
@@ -659,6 +674,8 @@
}
public void cancel() {
+ if(freeData)
+ block.free();
}
public void schedule() throws InserterException {