Author: toad
Date: 2008-12-17 20:36:39 +0000 (Wed, 17 Dec 2008)
New Revision: 24484

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   branches/db4o/freenet/src/freenet/keys/ClientCHK.java
   branches/db4o/freenet/src/freenet/keys/NodeCHK.java
Log:
Remove the keys when we're done with them.


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-12-17 20:27:48 UTC (rev 24483)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-12-17 20:36:39 UTC (rev 24484)
@@ -253,6 +253,8 @@
                                        return;
                                }
                                dataRetries[blockNo] = 0; // Prevent healing of 
successfully fetched block.
+                               if(persistent)
+                                       dataKeys[blockNo].removeFrom(container);
                                dataKeys[blockNo] = null;
                                if(persistent)
                                        
container.activate(dataBuckets[blockNo], 1);
@@ -272,6 +274,8 @@
                                        return;
                                }
                                checkRetries[blockNo] = 0; // Prevent healing 
of successfully fetched block.
+                               if(persistent)
+                                       
checkKeys[blockNo].removeFrom(container);
                                checkKeys[blockNo] = null;
                                if(persistent)
                                        
container.activate(checkBuckets[blockNo], 1);
@@ -556,6 +560,8 @@
                                if(persistent)
                                        dataBuckets[i].removeFrom(container);
                                dataBuckets[i] = null;
+                               if(persistent && dataKeys[i] != null)
+                                       dataKeys[i].removeFrom(container);
                                dataKeys[i] = null;
                        }
                        for(int i=0;i<checkBuckets.length;i++) {
@@ -602,6 +608,8 @@
                                if(persistent)
                                        checkBuckets[i].removeFrom(container);
                                checkBuckets[i] = null;
+                               if(persistent && checkKeys[i] != null)
+                                       checkKeys[i].removeFrom(container);
                                checkKeys[i] = null;
                        }
                }
@@ -685,12 +693,14 @@
                                        Logger.error(this, "Block already 
finished: "+blockNo);
                                        return;
                                }
+                               dataKeys[blockNo].removeFrom(container);
                                dataKeys[blockNo] = null;
                        } else if(blockNo < checkKeys.length + dataKeys.length) 
{
                                if(checkKeys[blockNo-dataKeys.length] == null) {
                                        Logger.error(this, "Check block already 
finished: "+blockNo);
                                        return;
                                }
+                               
checkKeys[blockNo-dataKeys.length].removeFrom(container);
                                checkKeys[blockNo-dataKeys.length] = null;
                        } else
                                Logger.error(this, "Unrecognized block number: 
"+blockNo, new Exception("error"));

Modified: branches/db4o/freenet/src/freenet/keys/ClientCHK.java
===================================================================
--- branches/db4o/freenet/src/freenet/keys/ClientCHK.java       2008-12-17 
20:27:48 UTC (rev 24483)
+++ branches/db4o/freenet/src/freenet/keys/ClientCHK.java       2008-12-17 
20:36:39 UTC (rev 24484)
@@ -9,6 +9,8 @@
 import java.net.MalformedURLException;
 import java.util.Arrays;
 
+import com.db4o.ObjectContainer;
+
 import freenet.support.Base64;
 
 /**
@@ -185,4 +187,9 @@
        public ClientKey cloneKey() {
                return new ClientCHK(this);
        }
+
+       public void removeFrom(ObjectContainer container) {
+               if(nodeKey != null) nodeKey.removeFrom(container);
+               container.delete(this);
+       }
 }

Modified: branches/db4o/freenet/src/freenet/keys/NodeCHK.java
===================================================================
--- branches/db4o/freenet/src/freenet/keys/NodeCHK.java 2008-12-17 20:27:48 UTC 
(rev 24483)
+++ branches/db4o/freenet/src/freenet/keys/NodeCHK.java 2008-12-17 20:36:39 UTC 
(rev 24484)
@@ -7,6 +7,9 @@
 import java.io.DataOutput;
 import java.io.DataOutputStream;
 import java.io.IOException;
+
+import com.db4o.ObjectContainer;
+
 import freenet.support.Base64;
 import freenet.support.Fields;
 import freenet.support.Logger;
@@ -131,4 +134,8 @@
                NodeCHK key = (NodeCHK) arg0;
                return Fields.compareBytes(routingKey, key.routingKey);
        }
+
+       public void removeFrom(ObjectContainer container) {
+               container.delete(this);
+       }
 }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to