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

 }


Reply via email to