Author: toad
Date: 2009-04-01 00:33:24 +0000 (Wed, 01 Apr 2009)
New Revision: 26298

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Avoid some more deactivation side-effects in split file fetching


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-04-01 00:28:54 UTC (rev 26297)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-04-01 00:33:24 UTC (rev 26298)
@@ -827,8 +827,11 @@
                        } else
                                Logger.error(this, "Unrecognized block number: 
"+blockNo, new Exception("error"));
                        // :(
-                       if(persistent)
-                               container.activate(parent, 1);
+                       boolean deactivateParent = false; // can get called 
from wierd places, don't deactivate parent if not necessary
+                       if(persistent) {
+                               deactivateParent = 
!container.ext().isActive(parent);
+                               if(deactivateParent) container.activate(parent, 
1);
+                       }
                        if(e.isFatal()) {
                                fatallyFailedBlocks++;
                                parent.fatallyFailedBlock(container, context);
@@ -836,7 +839,7 @@
                                failedBlocks++;
                                parent.failedBlock(container, context);
                        }
-                       if(persistent)
+                       if(deactivateParent)
                                container.deactivate(parent, 1);
                        // Once it is no longer possible to have a successful 
fetch, fail...
                        allFailed = failedBlocks + fatallyFailedBlocks > 
(dataKeys.length + checkKeys.length - minFetched);
@@ -990,10 +993,13 @@
                        }
                        if(ret != null) return ret;
                        if(noCreate) return null;
-                       if(persistent)
-                               container.activate(parent, 1);
+                       boolean deactivateParent = false;
+                       if(persistent) {
+                               deactivateParent = 
!container.ext().isActive(parent);
+                               if(deactivateParent) container.activate(parent, 
1);
+                       }
                        sub = new SplitFileFetcherSubSegment(this, parent, 
retryCount);
-                       if(persistent)
+                       if(deactivateParent)
                                container.deactivate(parent, 1);
                        subSegments.add(sub);
                }

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

Reply via email to