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);