I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit df4302dd authored by zzz's avatar zzz
Browse files

* Update:

   - Thread news fetcher so it doesn't clog the scheduler
parent 31f117e7
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,7 @@ import static net.i2p.update.UpdateType.*; ...@@ -22,6 +22,7 @@ import static net.i2p.update.UpdateType.*;
import net.i2p.util.EepGet; import net.i2p.util.EepGet;
import net.i2p.util.EepHead; import net.i2p.util.EepHead;
import net.i2p.util.FileUtil; import net.i2p.util.FileUtil;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log; import net.i2p.util.Log;
import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleScheduler;
import net.i2p.util.SimpleTimer; import net.i2p.util.SimpleTimer;
...@@ -39,7 +40,7 @@ class NewsTimerTask implements SimpleTimer.TimedEvent { ...@@ -39,7 +40,7 @@ class NewsTimerTask implements SimpleTimer.TimedEvent {
private final RouterContext _context; private final RouterContext _context;
private final Log _log; private final Log _log;
private final ConsoleUpdateManager _mgr; private final ConsoleUpdateManager _mgr;
private boolean _firstRun = true; private volatile boolean _firstRun = true;
private static final long INITIAL_DELAY = 5*60*1000; private static final long INITIAL_DELAY = 5*60*1000;
private static final long RUN_DELAY = 10*60*1000; private static final long RUN_DELAY = 10*60*1000;
...@@ -56,15 +57,8 @@ class NewsTimerTask implements SimpleTimer.TimedEvent { ...@@ -56,15 +57,8 @@ class NewsTimerTask implements SimpleTimer.TimedEvent {
public void timeReached() { public void timeReached() {
if (shouldFetchNews()) { if (shouldFetchNews()) {
// blocking Thread t = new Fetcher();
fetchNews(); t.start();
if (shouldFetchUnsigned()) {
// give it a sec for the download to kick in, if it's going to
try { Thread.sleep(5*1000); } catch (InterruptedException ie) {}
if (!_mgr.isCheckInProgress() && !_mgr.isUpdateInProgress())
// nonblocking
fetchUnsignedHead();
}
} else if (_firstRun) { } else if (_firstRun) {
// This covers the case where we got a new news but then shut down before it // This covers the case where we got a new news but then shut down before it
// was successfully downloaded, and then restarted within the 36 hour delay // was successfully downloaded, and then restarted within the 36 hour delay
...@@ -76,6 +70,7 @@ class NewsTimerTask implements SimpleTimer.TimedEvent { ...@@ -76,6 +70,7 @@ class NewsTimerTask implements SimpleTimer.TimedEvent {
// TODO unsigned too? // TODO unsigned too?
if (_mgr.shouldInstall() && if (_mgr.shouldInstall() &&
!_mgr.isCheckInProgress() && !_mgr.isUpdateInProgress()) !_mgr.isCheckInProgress() && !_mgr.isUpdateInProgress())
// non-blocking
_mgr.update(ROUTER_SIGNED); _mgr.update(ROUTER_SIGNED);
} }
_firstRun = false; _firstRun = false;
...@@ -129,4 +124,28 @@ class NewsTimerTask implements SimpleTimer.TimedEvent { ...@@ -129,4 +124,28 @@ class NewsTimerTask implements SimpleTimer.TimedEvent {
private void fetchUnsignedHead() { private void fetchUnsignedHead() {
_mgr.check(ROUTER_UNSIGNED); _mgr.check(ROUTER_UNSIGNED);
} }
/**
* Don't clog the scheduler when fetching the news
*
* @since 0.9.9
*/
private class Fetcher extends I2PAppThread {
public Fetcher() {
super("News Fetcher");
setDaemon(true);
}
public void run() {
// blocking
fetchNews();
if (shouldFetchUnsigned()) {
// give it a sec for the download to kick in, if it's going to
try { Thread.sleep(5*1000); } catch (InterruptedException ie) {}
if (!_mgr.isCheckInProgress() && !_mgr.isUpdateInProgress())
// nonblocking
fetchUnsignedHead();
}
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment