Author: nextgens
Date: 2008-08-08 11:05:44 +0000 (Fri, 08 Aug 2008)
New Revision: 21663

Modified:
   trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
   trunk/freenet/src/freenet/client/async/USKChecker.java
Log:
reschedule off-thread: apparently it helps a lot the simulator

Modified: trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2008-08-08 11:02:09 UTC (rev 21662)
+++ trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2008-08-08 11:05:44 UTC (rev 21663)
@@ -12,6 +12,7 @@
 import freenet.node.KeysFetchingLocally;
 import freenet.node.RequestScheduler;
 import freenet.node.SendableGet;
+import freenet.support.Executor;
 import freenet.support.Logger;

 public abstract class BaseSingleFileFetcher extends SendableGet {
@@ -64,9 +65,12 @@
                return key instanceof ClientSSK;
        }

-       /** Try again - returns true if we can retry 
-        * @param sched */
-       protected boolean retry(RequestScheduler sched) {
+       /**
+        * Try again - returns true if we can retry 
+        * @param sched
+        * @param the executor we will use to run the retry off-thread
+        */
+       protected boolean retry(RequestScheduler sched, Executor exec) {
                retryCount++;
                if(Logger.shouldLog(Logger.MINOR, this))
                        Logger.minor(this, "Attempting to retry... (max 
"+maxRetries+", current "+retryCount+ ')');
@@ -79,12 +83,15 @@
                                        Logger.error(this, "Already on the 
cooldown queue for "+this, new Exception("error"));
                                else
                                cooldownWakeupTime = sched.queueCooldown(key, 
this);
-                               return true; // We will retry, just not yet. 
See requeueAfterCooldown(Key).
                        } else {
+                               exec.execute(new Runnable() {
+                                       public void run() {
                                schedule();
                        }
-                       return true;
+                               }, "Retry executor for "+sched.toString());
                }
+                       return true; // We will retry in any case, maybe not 
just not yet. See requeueAfterCooldown(Key).
+               }
                return false;
        }


Modified: trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2008-08-08 11:02:09 UTC (rev 21662)
+++ trunk/freenet/src/freenet/client/async/SimpleSingleFileFetcher.java 
2008-08-08 11:05:44 UTC (rev 21663)
@@ -94,7 +94,7 @@
                        forceFatal = true;
                }
                if(!(e.isFatal() || forceFatal) ) {
-                       if(retry(sched)) {
+                       if(retry(sched, ctx.executor)) {
                                if(logMINOR) Logger.minor(this, "Retrying");
                                return;
                        }

Modified: trunk/freenet/src/freenet/client/async/USKChecker.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKChecker.java      2008-08-08 
11:02:09 UTC (rev 21662)
+++ trunk/freenet/src/freenet/client/async/USKChecker.java      2008-08-08 
11:05:44 UTC (rev 21663)
@@ -61,7 +61,7 @@
                        canRetry = true;
                }

-               if(canRetry && retry(sched)) return;
+               if(canRetry && retry(sched, ctx.executor)) return;

                // Ran out of retries.
                unregister(false);


Reply via email to