Author: toad
Date: 2009-02-17 16:29:41 +0000 (Tue, 17 Feb 2009)
New Revision: 25667

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
Log:
Fix removing a splitfile insert not removing the blocks from storage


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2009-02-17 15:08:07 UTC (rev 25666)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java    
    2009-02-17 16:29:41 UTC (rev 25667)
@@ -451,7 +451,7 @@
                else
                        schedule(container, context);
                if (finished) {
-                       parent.segmentFinished(this, container, context);
+                       finish(container, context, parent);
                }
                if(job != null) {
                        splitfileAlgo.addToQueue(job, context.fecQueue, 
container);
@@ -628,6 +628,20 @@
                        container.store(this);
                }
                parent.segmentFinished(this, container, context);
+               for(int i=0;i<dataBlocks.length;i++) {
+                       if(dataBlocks[i] == null) continue;
+                       container.activate(dataBlocks[i], 1);
+                       dataBlocks[i].free();
+                       dataBlocks[i].removeFrom(container);
+                       dataBlocks[i] = null;
+               }
+               for(int i=0;i<checkBlocks.length;i++) {
+                       if(checkBlocks[i] == null) continue;
+                       container.activate(checkBlocks[i], 1);
+                       checkBlocks[i].free();
+                       checkBlocks[i].removeFrom(container);
+                       checkBlocks[i] = null;
+               }
        }
 
        /**
@@ -651,6 +665,20 @@
                        container.deactivate(errors, 5);
                }
                parent.segmentFinished(this, container, context);
+               for(int i=0;i<dataBlocks.length;i++) {
+                       if(dataBlocks[i] == null) continue;
+                       container.activate(dataBlocks[i], 1);
+                       dataBlocks[i].free();
+                       dataBlocks[i].removeFrom(container);
+                       dataBlocks[i] = null;
+               }
+               for(int i=0;i<checkBlocks.length;i++) {
+                       if(checkBlocks[i] == null) continue;
+                       container.activate(checkBlocks[i], 1);
+                       checkBlocks[i].free();
+                       checkBlocks[i].removeFrom(container);
+                       checkBlocks[i] = null;
+               }
        }
 
        private void onEncode(int x, ClientCHK key, ObjectContainer container, 
ClientContext context) {
@@ -748,6 +776,20 @@
                        container.activate(parent, 1);
                }
                parent.segmentFinished(this, container, context);
+               for(int i=0;i<dataBlocks.length;i++) {
+                       if(dataBlocks[i] == null) continue;
+                       container.activate(dataBlocks[i], 1);
+                       dataBlocks[i].free();
+                       dataBlocks[i].removeFrom(container);
+                       dataBlocks[i] = null;
+               }
+               for(int i=0;i<checkBlocks.length;i++) {
+                       if(checkBlocks[i] == null) continue;
+                       container.activate(checkBlocks[i], 1);
+                       checkBlocks[i].free();
+                       checkBlocks[i].removeFrom(container);
+                       checkBlocks[i] = null;
+               }
        }
 
        public void onTransition(ClientPutState oldState, ClientPutState 
newState, ObjectContainer container) {

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

Reply via email to