Author: toad
Date: 2006-01-27 16:08:49 +0000 (Fri, 27 Jan 2006)
New Revision: 7950
Modified:
trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/support/SortedVectorByNumber.java
Log:
401:
More debugging, some fixes
Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2006-01-27 03:18:42 UTC (rev 7949)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2006-01-27 16:08:49 UTC (rev 7950)
@@ -120,25 +120,29 @@
Logger.minor(this, "Priority "+i+" is null");
continue;
}
- RandomGrabArrayWithInt rga = (RandomGrabArrayWithInt)
s.getFirst(); // will discard finished items
- if(rga == null) {
- Logger.minor(this, "No retrycount's in priority
"+i);
- priorities[i] = null;
- continue;
- }
- SendableRequest req = (SendableRequest)
rga.removeRandom();
- if(rga.isEmpty()) {
- s.remove(rga.getNumber());
- if(s.isEmpty()) {
+ while(true) {
+ RandomGrabArrayWithInt rga =
(RandomGrabArrayWithInt) s.getFirst(); // will discard finished items
+ if(rga == null) {
+ Logger.minor(this, "No retrycount's in
priority "+i);
priorities[i] = null;
+ break;
}
+ SendableRequest req = (SendableRequest)
rga.removeRandom();
+ if(rga.isEmpty()) {
+ Logger.minor(this, "Removing retrycount
"+rga.getNumber());
+ s.remove(rga.getNumber());
+ if(s.isEmpty()) {
+ Logger.minor(this, "Removing
priority "+i);
+ priorities[i] = null;
+ }
+ }
+ if(req == null) {
+ Logger.minor(this, "No requests in
priority "+i+", retrycount "+rga.getNumber()+" ("+rga+")");
+ continue;
+ }
+ Logger.minor(this, "removeFirst() returning
"+req+" ("+rga.getNumber()+")");
+ return req;
}
- if(req == null) {
- Logger.minor(this, "No requests in priority
"+i+", retrycount "+rga.getNumber());
- continue;
- }
- Logger.minor(this, "removeFirst() returning "+req);
- return req;
}
Logger.minor(this, "No requests to run");
return null;
Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-01-27
03:18:42 UTC (rev 7949)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-01-27
16:08:49 UTC (rev 7950)
@@ -129,6 +129,9 @@
t.printStackTrace(System.err);
}
}
+ } catch (Throwable t) {
+ System.err.println("Caught "+t);
+ t.printStackTrace(System.err);
} finally {
System.err.println("run() exiting");
Logger.error(this, "run() exiting");
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-27 03:18:42 UTC (rev
7949)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-27 16:08:49 UTC (rev
7950)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 400;
+ public static final int buildNumber = 401;
/** Oldest build of Fred we will talk to */
public static final int lastGoodBuild = 400;
Modified: trunk/freenet/src/freenet/support/SortedVectorByNumber.java
===================================================================
--- trunk/freenet/src/freenet/support/SortedVectorByNumber.java 2006-01-27
03:18:42 UTC (rev 7949)
+++ trunk/freenet/src/freenet/support/SortedVectorByNumber.java 2006-01-27
16:08:49 UTC (rev 7950)
@@ -40,15 +40,31 @@
if(x >= 0) {
if(x < length-1)
System.arraycopy(data, x+1, data, x,
length-x-1);
- data[length--] = null;
+ data[--length] = null;
}
- if(length < 4*data.length && length > MIN_SIZE) {
+ if(length*4 < data.length && length > MIN_SIZE) {
IntNumberedItem[] newData = new
IntNumberedItem[Math.max(length*2, MIN_SIZE)];
System.arraycopy(data, 0, newData, 0, length);
data = newData;
}
+ verify();
}
+ private synchronized void verify() {
+ IntNumberedItem lastItem = null;
+ for(int i=0;i<length;i++) {
+ IntNumberedItem item = data[i];
+ if(i>0) {
+ if(item.getNumber() <= lastItem.getNumber())
+ throw new IllegalStateException("Verify
failed!");
+ }
+ lastItem = item;
+ }
+ for(int i=length;i<data.length;i++)
+ if(data[i] != null)
+ throw new
IllegalStateException("length="+length+", data.length="+data.length+" but
["+i+"] != null");
+ }
+
public synchronized void add(IntNumberedItem grabber) {
int x = Arrays.binarySearch(data, new
Integer(grabber.getNumber()), comparator);
if(x >= 0) throw new IllegalArgumentException(); // already
exists
@@ -65,6 +81,7 @@
System.arraycopy(data, x, data, x+1, length-x);
data[x] = grabber;
length++;
+ verify();
}
}