Author: toad
Date: 2009-02-04 13:41:17 +0000 (Wed, 04 Feb 2009)
New Revision: 25539

Modified:
   branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
Log:
Don't deactivate FreenetURI.EMPTY_CHK. Don't deactivate sourceData unless it 
was deactivated when we started.


Modified: 
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2009-02-04 13:40:22 UTC (rev 25538)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2009-02-04 13:41:17 UTC (rev 25539)
@@ -527,16 +527,27 @@
 
        private BlockItem getBlockItem(ObjectContainer container, ClientContext 
context) {
                try {
-                       if(persistent) container.activate(sourceData, 1);
+                       boolean deactivateBucket = false;
+                       if(persistent) {
+                               container.activate(uri, 1);
+                               deactivateBucket = 
!container.ext().isActive(sourceData);
+                               if(deactivateBucket)
+                                       container.activate(sourceData, 1);
+                       }
                        Bucket data = sourceData.createShadow();
                        FreenetURI u = uri;
-                       if(u.getKeyType().equals("CHK")) u = 
FreenetURI.EMPTY_CHK_URI;
+                       if(u.getKeyType().equals("CHK") && !persistent) u = 
FreenetURI.EMPTY_CHK_URI;
                        else u = u.clone();
                        if(data == null) {
                                data = 
context.tempBucketFactory.makeBucket(sourceData.size());
                                BucketTools.copy(sourceData, data);
                        }
-                       if(persistent) container.deactivate(sourceData, 1);
+                       if(persistent) {
+                               if(deactivateBucket)
+                                       container.deactivate(sourceData, 1);
+                               if(uri != FreenetURI.EMPTY_CHK_URI)
+                                       container.deactivate(uri, 1);
+                       }
                        return new BlockItem(this, data, isMetadata, 
compressionCodec, sourceLength, u, hashCode(), persistent);
                } catch (IOException e) {
                        fail(new InsertException(InsertException.BUCKET_ERROR, 
e, null), container, context);

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

Reply via email to