/** * Schedule the fetch. * @param context * @param ignoreStore If true, don't check the datastore before re-registering the requests to * run. Should be true when rescheduling after a normal cooldown, false after recovering from * data corruption (the blocks may still be in the store), false otherwise. */ public void schedule(ClientContext context, boolean ignoreStore) { ClientRequestScheduler sched = context.getChkFetchScheduler(realTimeFlag); BlockSet blocks = parent.blockFetchContext.blocks; sched.register(this, new SendableGet[] { this }, persistent, blocks, ignoreStore); }
public void schedule(ClientContext context) { if(key == null) throw new NullPointerException(); getScheduler(context).register(this, new SendableGet[] { this }, persistent, ctx.blocks, false); }
public void reschedule(ClientContext context) { getScheduler(context).register(null, new SendableGet[] { this }, persistent, ctx.blocks, true); }
private boolean fillKeysWatching(long ed, ClientContext context) { synchronized(this) { // Do not run a new one until this one has finished. // StoreCheckerGetter itself will automatically call back to fillKeysWatching so there is no chance of losing it. if(runningStoreChecker != null) return true; final USKStoreChecker checker = watchingKeys.getDatastoreChecker(ed); if(checker == null) { if(logMINOR) Logger.minor(this, "No datastore checker"); return false; } runningStoreChecker = new StoreCheckerGetter(parent, checker); } try { context.getSskFetchScheduler(realTimeFlag).register(null, new SendableGet[] { runningStoreChecker } , false, null, false); } catch (Throwable t) { synchronized(this) { runningStoreChecker = null; } Logger.error(this, "Unable to start: "+t, t); try { runningStoreChecker.unregister(context, progressPollPriority); } catch (Throwable ignored) { // Ignore, hopefully it's already unregistered } } if(logMINOR) Logger.minor(this, "Registered "+runningStoreChecker+" for "+this); return true; }