Author: toad
Date: 2009-04-02 23:46:19 +0000 (Thu, 02 Apr 2009)
New Revision: 26395

Modified:
   trunk/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
indent


Modified: trunk/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java      
2009-04-02 23:41:17 UTC (rev 26394)
+++ trunk/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java      
2009-04-02 23:46:19 UTC (rev 26395)
@@ -372,196 +372,196 @@
                        maxPrio = RequestStarter.MINIMUM_PRIORITY_CLASS;
                for(;choosenPriorityClass <= maxPrio;choosenPriorityClass++) {
                        if(logMINOR) Logger.minor(this, "Using priority 
"+choosenPriorityClass);
-               if(tryOfferedKeys) {
-                       if(offeredKeys[choosenPriorityClass].hasValidKeys(this, 
null, context))
-                               return offeredKeys[choosenPriorityClass];
-               }
-               SortedVectorByNumber perm = null;
-               if(!transientOnly)
-                       perm = priorities[choosenPriorityClass];
-               SortedVectorByNumber trans = null;
-               if(!notTransient)
-                       trans = schedTransient.priorities[choosenPriorityClass];
-               if(perm == null && trans == null) {
-                       if(logMINOR) Logger.minor(this, "No requests to run: 
chosen priority empty");
-                       continue; // Try next priority
-               }
-               int permRetryIndex = 0;
-               int transRetryIndex = 0;
-               while(true) {
-                       int permRetryCount = perm == null ? Integer.MAX_VALUE : 
perm.getNumberByIndex(permRetryIndex);
-                       int transRetryCount = trans == null ? Integer.MAX_VALUE 
: trans.getNumberByIndex(transRetryIndex);
-                       if(choosenPriorityClass == maxPrio) {
-                               if(permRetryCount >= retryCount) {
-                                       permRetryCount = Integer.MAX_VALUE;
-                               }
-                               if(transRetryCount >= retryCount) {
-                                       transRetryCount = Integer.MAX_VALUE;
-                               }
+                       if(tryOfferedKeys) {
+                               
if(offeredKeys[choosenPriorityClass].hasValidKeys(this, null, context))
+                                       return 
offeredKeys[choosenPriorityClass];
                        }
-                       if(permRetryCount == Integer.MAX_VALUE && 
transRetryCount == Integer.MAX_VALUE) {
-                               if(logMINOR) Logger.minor(this, "No requests to 
run: ran out of retrycounts on chosen priority");
-                               break; // Try next priority
+                       SortedVectorByNumber perm = null;
+                       if(!transientOnly)
+                               perm = priorities[choosenPriorityClass];
+                       SortedVectorByNumber trans = null;
+                       if(!notTransient)
+                               trans = 
schedTransient.priorities[choosenPriorityClass];
+                       if(perm == null && trans == null) {
+                               if(logMINOR) Logger.minor(this, "No requests to 
run: chosen priority empty");
+                               continue; // Try next priority
                        }
-                       SectoredRandomGrabArrayWithInt chosenTracker = null;
-                       SortedVectorByNumber trackerParent = null;
-                       if(permRetryCount == transRetryCount) {
-                               // Choose between them.
-                               SectoredRandomGrabArrayWithInt permRetryTracker 
= (SectoredRandomGrabArrayWithInt) perm.getByIndex(permRetryIndex);
-                               if(persistent() && permRetryTracker != null)
-                                       container.activate(permRetryTracker, 1);
-                               SectoredRandomGrabArrayWithInt 
transRetryTracker = (SectoredRandomGrabArrayWithInt) 
trans.getByIndex(transRetryIndex);
-                               int permTrackerSize = permRetryTracker.size();
-                               int transTrackerSize = transRetryTracker.size();
-                               if(permTrackerSize + transTrackerSize == 0) {
-                                       permRetryIndex++;
-                                       transRetryIndex++;
-                                       continue;
+                       int permRetryIndex = 0;
+                       int transRetryIndex = 0;
+                       while(true) {
+                               int permRetryCount = perm == null ? 
Integer.MAX_VALUE : perm.getNumberByIndex(permRetryIndex);
+                               int transRetryCount = trans == null ? 
Integer.MAX_VALUE : trans.getNumberByIndex(transRetryIndex);
+                               if(choosenPriorityClass == maxPrio) {
+                                       if(permRetryCount >= retryCount) {
+                                               permRetryCount = 
Integer.MAX_VALUE;
+                                       }
+                                       if(transRetryCount >= retryCount) {
+                                               transRetryCount = 
Integer.MAX_VALUE;
+                                       }
                                }
-                               if(random.nextInt(permTrackerSize + 
transTrackerSize) > permTrackerSize) {
-                                       chosenTracker = permRetryTracker;
+                               if(permRetryCount == Integer.MAX_VALUE && 
transRetryCount == Integer.MAX_VALUE) {
+                                       if(logMINOR) Logger.minor(this, "No 
requests to run: ran out of retrycounts on chosen priority");
+                                       break; // Try next priority
+                               }
+                               SectoredRandomGrabArrayWithInt chosenTracker = 
null;
+                               SortedVectorByNumber trackerParent = null;
+                               if(permRetryCount == transRetryCount) {
+                                       // Choose between them.
+                                       SectoredRandomGrabArrayWithInt 
permRetryTracker = (SectoredRandomGrabArrayWithInt) 
perm.getByIndex(permRetryIndex);
+                                       if(persistent() && permRetryTracker != 
null)
+                                               
container.activate(permRetryTracker, 1);
+                                       SectoredRandomGrabArrayWithInt 
transRetryTracker = (SectoredRandomGrabArrayWithInt) 
trans.getByIndex(transRetryIndex);
+                                       int permTrackerSize = 
permRetryTracker.size();
+                                       int transTrackerSize = 
transRetryTracker.size();
+                                       if(permTrackerSize + transTrackerSize 
== 0) {
+                                               permRetryIndex++;
+                                               transRetryIndex++;
+                                               continue;
+                                       }
+                                       if(random.nextInt(permTrackerSize + 
transTrackerSize) > permTrackerSize) {
+                                               chosenTracker = 
permRetryTracker;
+                                               trackerParent = perm;
+                                               permRetryIndex++;
+                                       } else {
+                                               chosenTracker = 
transRetryTracker;
+                                               trackerParent = trans;
+                                               transRetryIndex++;
+                                       }
+                               } else if(permRetryCount < transRetryCount) {
+                                       chosenTracker = 
(SectoredRandomGrabArrayWithInt) perm.getByIndex(permRetryIndex);
+                                       if(persistent() && chosenTracker != 
null)
+                                               
container.activate(chosenTracker, 1);
                                        trackerParent = perm;
                                        permRetryIndex++;
                                } else {
-                                       chosenTracker = transRetryTracker;
+                                       chosenTracker = 
(SectoredRandomGrabArrayWithInt) trans.getByIndex(transRetryIndex);
                                        trackerParent = trans;
                                        transRetryIndex++;
                                }
-                       } else if(permRetryCount < transRetryCount) {
-                               chosenTracker = 
(SectoredRandomGrabArrayWithInt) perm.getByIndex(permRetryIndex);
-                               if(persistent() && chosenTracker != null)
-                                       container.activate(chosenTracker, 1);
-                               trackerParent = perm;
-                               permRetryIndex++;
-                       } else {
-                               chosenTracker = 
(SectoredRandomGrabArrayWithInt) trans.getByIndex(transRetryIndex);
-                               trackerParent = trans;
-                               transRetryIndex++;
-                       }
-                       if(logMINOR)
-                               Logger.minor(this, "Got retry count tracker 
"+chosenTracker);
-                       SendableRequest req = (SendableRequest) 
chosenTracker.removeRandom(starter, container, context);
-                       if(chosenTracker.isEmpty()) {
-                               trackerParent.remove(chosenTracker.getNumber(), 
container);
-                               if(chosenTracker.persistent())
-                                       chosenTracker.removeFrom(container);
-                               if(trackerParent.isEmpty()) {
-                                       if(logMINOR) Logger.minor(this, "Should 
remove priority");
-                               }
-                       }
-                       if(req == null) {
-                               if(logMINOR) Logger.minor(this, "No requests, 
adjusted retrycount "+chosenTracker.getNumber()+" ("+chosenTracker+") of 
priority "+choosenPriorityClass);
-                               continue; // Try next retry count.
-                       }
-                       if(chosenTracker.persistent())
-                               container.activate(req, 1); // FIXME
-                       if(req.persistent() != trackerParent.persistent()) {
-                               Logger.error(this, 
"Request.persistent()="+req.persistent()+" but is in the queue for 
persistent="+trackerParent.persistent()+" for "+req);
-                               // FIXME fix it
-                       }
-                       if(req.getPriorityClass(container) != 
choosenPriorityClass) {
-                               // Reinsert it : shouldn't happen if we are 
calling reregisterAll,
-                               // maybe we should ask people to report that 
error if seen
-                               Logger.normal(this, "In wrong priority class: 
"+req+" (req.prio="+req.getPriorityClass(container)+" but 
chosen="+choosenPriorityClass+ ')');
-                               // Remove it.
-                               SectoredRandomGrabArrayWithObject clientGrabber 
= (SectoredRandomGrabArrayWithObject) 
chosenTracker.getGrabber(req.getClient(container));
-                               if(clientGrabber != null) {
+                               if(logMINOR)
+                                       Logger.minor(this, "Got retry count 
tracker "+chosenTracker);
+                               SendableRequest req = (SendableRequest) 
chosenTracker.removeRandom(starter, container, context);
+                               if(chosenTracker.isEmpty()) {
+                                       
trackerParent.remove(chosenTracker.getNumber(), container);
                                        if(chosenTracker.persistent())
-                                               
container.activate(clientGrabber, 1);
-                                       RandomGrabArray baseRGA = 
(RandomGrabArray) clientGrabber.getGrabber(req.getClientRequest());
-                                       if(baseRGA != null) {
-                                               baseRGA.remove(req, container);
-                                       } else {
-                                               // Okay, it's been removed 
already. Cool.
+                                               
chosenTracker.removeFrom(container);
+                                       if(trackerParent.isEmpty()) {
+                                               if(logMINOR) Logger.minor(this, 
"Should remove priority");
                                        }
-                               } else {
-                                       Logger.error(this, "Could not find 
client grabber for client "+req.getClient(container)+" from "+chosenTracker);
                                }
-                               if(req.persistent())
-                                       innerRegister(req, random, container, 
null);
-                               else
-                                       schedTransient.innerRegister(req, 
random, container, null);
-                               continue; // Try the next one on this retry 
count.
-                       }
-                       
-                       // Check recentSuccesses
-                       /** Choose a recently succeeded request.
-                        * 50% chance of using a recently succeeded request, if 
there is one.
-                        * For transient requests, we keep a list of recently 
succeeded BaseSendableGet's,
-                        * because transient requests are chosen individually.
-                        * But for persistent requests, we keep a list of 
RandomGrabArray's, because
-                        * persistent requests are chosen a whole 
SendableRequest at a time.
-                        * 
-                        * FIXME: Only replaces persistent requests with 
persistent requests (of similar priority and retry count), or transient with 
transient.
-                        * Probably this is acceptable.
-                        */
-                       if(!req.persistent()) {
-                               List recent = schedTransient.recentSuccesses;
-                               SendableRequest altReq = null;
-                               if(!recent.isEmpty()) {
-                                       if(random.nextBoolean()) {
-                                               altReq = (BaseSendableGet) 
recent.remove(recent.size()-1);
-                                       }
+                               if(req == null) {
+                                       if(logMINOR) Logger.minor(this, "No 
requests, adjusted retrycount "+chosenTracker.getNumber()+" ("+chosenTracker+") 
of priority "+choosenPriorityClass);
+                                       continue; // Try next retry count.
                                }
-                               if(altReq != null && 
(altReq.isCancelled(container) || altReq.isEmpty(container))) {
-                                       if(logMINOR)
-                                               Logger.minor(this, "Ignoring 
cancelled recently succeeded item "+altReq);
-                                       altReq = null;
+                               if(chosenTracker.persistent())
+                                       container.activate(req, 1); // FIXME
+                               if(req.persistent() != 
trackerParent.persistent()) {
+                                       Logger.error(this, 
"Request.persistent()="+req.persistent()+" but is in the queue for 
persistent="+trackerParent.persistent()+" for "+req);
+                                       // FIXME fix it
                                }
-                               if(altReq != null && 
altReq.getPriorityClass(container) <= choosenPriorityClass && 
-                                               
fixRetryCount(altReq.getRetryCount()) <= chosenTracker.getNumber() && 
!altReq.isEmpty(container) && altReq != req) {
-                                       // Use the recent one instead
-                                       if(logMINOR)
-                                               Logger.minor(this, "Recently 
succeeded (transient) req "+altReq+" 
(prio="+altReq.getPriorityClass(container)+" retry count 
"+altReq.getRetryCount()+") is better than "+req+" 
(prio="+req.getPriorityClass(container)+" retry "+req.getRetryCount()+"), using 
that");
-                                       // Don't need to reregister, because 
removeRandom doesn't actually remove!
-                                       req = altReq;
-                               } else if(altReq != null) {
-                                       // Don't use the recent one
-                                       if(logMINOR)
-                                               Logger.minor(this, "Chosen req 
"+req+" is better, reregistering recently succeeded "+altReq);
-                                       recent.add(altReq);
+                               if(req.getPriorityClass(container) != 
choosenPriorityClass) {
+                                       // Reinsert it : shouldn't happen if we 
are calling reregisterAll,
+                                       // maybe we should ask people to report 
that error if seen
+                                       Logger.normal(this, "In wrong priority 
class: "+req+" (req.prio="+req.getPriorityClass(container)+" but 
chosen="+choosenPriorityClass+ ')');
+                                       // Remove it.
+                                       SectoredRandomGrabArrayWithObject 
clientGrabber = (SectoredRandomGrabArrayWithObject) 
chosenTracker.getGrabber(req.getClient(container));
+                                       if(clientGrabber != null) {
+                                               if(chosenTracker.persistent())
+                                                       
container.activate(clientGrabber, 1);
+                                               RandomGrabArray baseRGA = 
(RandomGrabArray) clientGrabber.getGrabber(req.getClientRequest());
+                                               if(baseRGA != null) {
+                                                       baseRGA.remove(req, 
container);
+                                               } else {
+                                                       // Okay, it's been 
removed already. Cool.
+                                               }
+                                       } else {
+                                               Logger.error(this, "Could not 
find client grabber for client "+req.getClient(container)+" from 
"+chosenTracker);
+                                       }
+                                       if(req.persistent())
+                                               innerRegister(req, random, 
container, null);
+                                       else
+                                               
schedTransient.innerRegister(req, random, container, null);
+                                       continue; // Try the next one on this 
retry count.
                                }
-                       } else {
-                               RandomGrabArray altRGA = null;
-                               synchronized(recentSuccesses) {
-                                       if(!(recentSuccesses.isEmpty() || 
random.nextBoolean())) {
-                                               altRGA = 
recentSuccesses.remove(0);
+                               
+                               // Check recentSuccesses
+                               /** Choose a recently succeeded request.
+                                * 50% chance of using a recently succeeded 
request, if there is one.
+                                * For transient requests, we keep a list of 
recently succeeded BaseSendableGet's,
+                                * because transient requests are chosen 
individually.
+                                * But for persistent requests, we keep a list 
of RandomGrabArray's, because
+                                * persistent requests are chosen a whole 
SendableRequest at a time.
+                                * 
+                                * FIXME: Only replaces persistent requests 
with persistent requests (of similar priority and retry count), or transient 
with transient.
+                                * Probably this is acceptable.
+                                */
+                               if(!req.persistent()) {
+                                       List recent = 
schedTransient.recentSuccesses;
+                                       SendableRequest altReq = null;
+                                       if(!recent.isEmpty()) {
+                                               if(random.nextBoolean()) {
+                                                       altReq = 
(BaseSendableGet) recent.remove(recent.size()-1);
+                                               }
                                        }
-                               }
-                               container.activate(altRGA, 1);
-                               if(altRGA != null && 
container.ext().isStored(altRGA) && !altRGA.isEmpty()) {
+                                       if(altReq != null && 
(altReq.isCancelled(container) || altReq.isEmpty(container))) {
+                                               if(logMINOR)
+                                                       Logger.minor(this, 
"Ignoring cancelled recently succeeded item "+altReq);
+                                               altReq = null;
+                                       }
+                                       if(altReq != null && 
altReq.getPriorityClass(container) <= choosenPriorityClass && 
+                                                       
fixRetryCount(altReq.getRetryCount()) <= chosenTracker.getNumber() && 
!altReq.isEmpty(container) && altReq != req) {
+                                               // Use the recent one instead
+                                               if(logMINOR)
+                                                       Logger.minor(this, 
"Recently succeeded (transient) req "+altReq+" 
(prio="+altReq.getPriorityClass(container)+" retry count 
"+altReq.getRetryCount()+") is better than "+req+" 
(prio="+req.getPriorityClass(container)+" retry "+req.getRetryCount()+"), using 
that");
+                                               // Don't need to reregister, 
because removeRandom doesn't actually remove!
+                                               req = altReq;
+                                       } else if(altReq != null) {
+                                               // Don't use the recent one
+                                               if(logMINOR)
+                                                       Logger.minor(this, 
"Chosen req "+req+" is better, reregistering recently succeeded "+altReq);
+                                               recent.add(altReq);
+                                       }
+                               } else {
+                                       RandomGrabArray altRGA = null;
+                                       synchronized(recentSuccesses) {
+                                               if(!(recentSuccesses.isEmpty() 
|| random.nextBoolean())) {
+                                                       altRGA = 
recentSuccesses.remove(0);
+                                               }
+                                       }
                                        container.activate(altRGA, 1);
-                                       if(logMINOR)
-                                               Logger.minor(this, "Maybe using 
recently succeeded item from "+altRGA);
-                                       SendableRequest altReq = 
(SendableRequest) altRGA.removeRandom(starter, container, context);
-                                       container.activate(altReq, 1);
-                                       if(altReq != null) {
-                                               
if(altReq.getPriorityClass(container) <= choosenPriorityClass &&
-                                                               
fixRetryCount(altReq.getRetryCount()) <= chosenTracker.getNumber() && 
!altReq.isEmpty(container) && altReq != req) {
-                                                       // Use the recent one 
instead
-                                                       if(logMINOR)
-                                                               
Logger.minor(this, "Recently succeeded (persistent) req "+altReq+" 
(prio="+altReq.getPriorityClass(container)+" retry count 
"+altReq.getRetryCount()+") is better than "+req+" 
(prio="+req.getPriorityClass(container)+" retry "+req.getRetryCount()+"), using 
that");
-                                                       // Don't need to 
reregister, because removeRandom doesn't actually remove!
-                                                       req = altReq;
-                                               } else if(altReq != null) {
-                                                       if(logMINOR)
-                                                               
Logger.minor(this, "Chosen (persistent) req "+req+" is better, reregistering 
recently succeeded "+altRGA+" for "+altReq);
-                                                       
synchronized(recentSuccesses) {
-                                                               
recentSuccesses.add(altRGA);
+                                       if(altRGA != null && 
container.ext().isStored(altRGA) && !altRGA.isEmpty()) {
+                                               container.activate(altRGA, 1);
+                                               if(logMINOR)
+                                                       Logger.minor(this, 
"Maybe using recently succeeded item from "+altRGA);
+                                               SendableRequest altReq = 
(SendableRequest) altRGA.removeRandom(starter, container, context);
+                                               container.activate(altReq, 1);
+                                               if(altReq != null) {
+                                                       
if(altReq.getPriorityClass(container) <= choosenPriorityClass &&
+                                                                       
fixRetryCount(altReq.getRetryCount()) <= chosenTracker.getNumber() && 
!altReq.isEmpty(container) && altReq != req) {
+                                                               // Use the 
recent one instead
+                                                               if(logMINOR)
+                                                                       
Logger.minor(this, "Recently succeeded (persistent) req "+altReq+" 
(prio="+altReq.getPriorityClass(container)+" retry count 
"+altReq.getRetryCount()+") is better than "+req+" 
(prio="+req.getPriorityClass(container)+" retry "+req.getRetryCount()+"), using 
that");
+                                                               // Don't need 
to reregister, because removeRandom doesn't actually remove!
+                                                               req = altReq;
+                                                       } else if(altReq != 
null) {
+                                                               if(logMINOR)
+                                                                       
Logger.minor(this, "Chosen (persistent) req "+req+" is better, reregistering 
recently succeeded "+altRGA+" for "+altReq);
+                                                               
synchronized(recentSuccesses) {
+                                                                       
recentSuccesses.add(altRGA);
+                                                               }
                                                        }
                                                }
                                        }
                                }
+                               
+                               // Now we have chosen a request.
+                               if(logMINOR) Logger.minor(this, "removeFirst() 
returning "+req+" ("+chosenTracker.getNumber()+", prio "+
+                                               
req.getPriorityClass(container)+", retries "+req.getRetryCount()+", client 
"+req.getClient(container)+", client-req "+req.getClientRequest()+ ')');
+                               if(logMINOR) Logger.minor(this, "removeFirst() 
returning "+req+" of "+req.getClientRequest());
+                               return req;
+                               
                        }
-                       
-                       // Now we have chosen a request.
-                       if(logMINOR) Logger.minor(this, "removeFirst() 
returning "+req+" ("+chosenTracker.getNumber()+", prio "+
-                                       req.getPriorityClass(container)+", 
retries "+req.getRetryCount()+", client "+req.getClient(container)+", 
client-req "+req.getClientRequest()+ ')');
-                       if(logMINOR) Logger.minor(this, "removeFirst() 
returning "+req+" of "+req.getClientRequest());
-                       return req;
-                       
                }
-               }
                if(logMINOR) Logger.minor(this, "No requests to run");
                return null;
        }

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

Reply via email to