Author: toad
Date: 2008-06-25 23:23:56 +0000 (Wed, 25 Jun 2008)
New Revision: 20724

Modified:
   branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
Log:
Even more activation

Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-25 22:55:39 UTC (rev 20723)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-25 23:23:56 UTC (rev 20724)
@@ -353,6 +353,9 @@
                 */
                void start(SimpleFieldSet fs, boolean forceMetadata, 
ObjectContainer container, ClientContext context) throws ResumeException, 
InsertException {

+                       if(persistent)
+                               container.activate(parent, 1);
+                       
                        boolean meta = metadata || forceMetadata;

                        // Don't include the booleans; wait for the callback.
@@ -406,6 +409,9 @@
                }

                public void onSuccess(ClientPutState state, ObjectContainer 
container, ClientContext context) {
+                       if(persistent) {
+                               container.activate(block, 2);
+                       }
                        logMINOR = Logger.shouldLog(Logger.MINOR, this);
                        if(logMINOR) Logger.minor(this, "onSuccess("+state+") 
for "+this);
                        boolean lateStart = false;
@@ -446,6 +452,9 @@
                }

                public void onFailure(InsertException e, ClientPutState state, 
ObjectContainer container, ClientContext context) {
+                       if(persistent) {
+                               container.activate(block, 1);
+                       }
                        synchronized(this) {
                                if(finished){
                                        if(freeData)
@@ -457,6 +466,10 @@
                }

                public void onMetadata(Metadata meta, ClientPutState state, 
ObjectContainer container, ClientContext context) {
+                       if(persistent) {
+                               container.activate(cb, 1);
+                               container.activate(block, 2);
+                       }
                        InsertException e = null;
                        synchronized(this) {
                                if(finished) return;
@@ -550,6 +563,8 @@
                        if(logMINOR) Logger.minor(this, "Failing: "+e, e);
                        ClientPutState oldSFI = null;
                        ClientPutState oldMetadataPutter = null;
+                       if(persistent)
+                               container.activate(block, 2);
                        synchronized(this) {
                                if(finished){
                                        if(freeData)
@@ -602,8 +617,11 @@
                        if(oldMetadataPutter != null)
                                oldMetadataPutter.cancel(container, context);

-                       if(freeData)
+                       if(freeData) {
+                               if(persistent)
+                                       container.activate(block, 2);
                                block.free(container);
+                       }
                }

                public void onBlockSetFinished(ClientPutState state, 
ObjectContainer container, ClientContext context) {
@@ -692,7 +710,7 @@
                                ClientPutState splitInserter;
                                synchronized(this) {
                                        if(metaInsertStarted) return;
-                                       if(persistent)
+                                       if(persistent && metadataPutter != null)
                                                
container.activate(metadataPutter, 1);
                                        putter = metadataPutter;
                                        if(putter == null) {


Reply via email to