Author: toad
Date: 2009-03-17 17:16:45 +0000 (Tue, 17 Mar 2009)
New Revision: 26066

Modified:
   branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
Log:
NPE fixes, activation


Modified: 
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2009-03-17 15:33:07 UTC (rev 26065)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2009-03-17 17:16:45 UTC (rev 26066)
@@ -268,17 +268,18 @@
                        parent.fatallyFailedBlock(container, context);
                else
                        parent.failedBlock(container, context);
-               if(persistent)
-                       container.activate(cb, 1);
                unregister(container, context);
-               cb.onFailure(e, this, container, context);
                if(freeData) {
+                       if(persistent) container.activate(sourceData, 1);
                        sourceData.free();
                        if(persistent) sourceData.removeFrom(container);
                        sourceData = null;
                        if(persistent)
                                container.store(this);
                }
+               if(persistent)
+                       container.activate(cb, 1);
+               cb.onFailure(e, this, container, context);
        }
 
        public ClientKeyBlock getBlock(ObjectContainer container, ClientContext 
context, boolean calledByCB) {
@@ -564,6 +565,15 @@
 
        private BlockItem getBlockItem(ObjectContainer container, ClientContext 
context) {
                try {
+                       synchronized(this) {
+                               if(finished) return null;
+                       }
+                       if(persistent) {
+                               if(sourceData == null) {
+                                       Logger.error(this, "getBlockItem(): 
sourceData = null but active = "+container.ext().isActive(this));
+                                       return null;
+                               }
+                       }
                        boolean deactivateBucket = false;
                        if(persistent) {
                                container.activate(uri, 1);
@@ -683,6 +693,7 @@
                errors.removeFrom(container);
                if(freeData && sourceData != null && 
container.ext().isStored(sourceData)) {
                        Logger.error(this, "Data not removed!");
+                       container.activate(sourceData, 1);
                        sourceData.removeFrom(container);
                }
                container.delete(this);

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

Reply via email to