Author: toad
Date: 2008-06-26 01:22:37 +0000 (Thu, 26 Jun 2008)
New Revision: 20735

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
Log:
Another subtle activation problem

Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java       
2008-06-26 01:20:09 UTC (rev 20734)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java       
2008-06-26 01:22:37 UTC (rev 20735)
@@ -303,8 +303,8 @@
                Metadata m = null;
                synchronized(this) {
                        // Create metadata
-                       ClientCHK[] dataURIs = getDataCHKs();
-                       ClientCHK[] checkURIs = getCheckCHKs();
+                       ClientCHK[] dataURIs = getDataCHKs(container);
+                       ClientCHK[] checkURIs = getCheckCHKs(container);

                        if(logMINOR) Logger.minor(this, "Data URIs: 
"+dataURIs.length+", check URIs: "+checkURIs.length);

@@ -347,7 +347,7 @@
                return false;
        }

-       private ClientCHK[] getCheckCHKs() {
+       private ClientCHK[] getCheckCHKs(ObjectContainer container) {
                // Copy check blocks from each segment into a FreenetURI[].
                ClientCHK[] uris = new ClientCHK[countCheckBlocks];
                int x = 0;
@@ -359,13 +359,18 @@
                        x += segURIs.length;
                }

+               if(persistent) {
+                       for(int i=0;i<uris.length;i++)
+                               container.activate(uris[i], 5);
+               }
+               
                if(uris.length != x)
                        throw new IllegalStateException("Total is wrong");

                return uris;
        }

-       private ClientCHK[] getDataCHKs() {
+       private ClientCHK[] getDataCHKs(ObjectContainer container) {
                // Copy check blocks from each segment into a FreenetURI[].
                ClientCHK[] uris = new ClientCHK[countDataBlocks];
                int x = 0;
@@ -377,6 +382,11 @@
                        x += segURIs.length;
                }

+               if(persistent) {
+                       for(int i=0;i<uris.length;i++)
+                               container.activate(uris[i], 5);
+               }
+               
                if(uris.length != x)
                        throw new IllegalStateException("Total is wrong");



Reply via email to