Author: toad
Date: 2006-01-28 01:07:36 +0000 (Sat, 28 Jan 2006)
New Revision: 7962

Modified:
   trunk/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
   trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
   trunk/freenet/src/freenet/node/Version.java
Log:
413:
Mostly minor stuff.

Modified: trunk/freenet/src/freenet/client/async/MultiPutCompletionCallback.java
===================================================================
--- trunk/freenet/src/freenet/client/async/MultiPutCompletionCallback.java      
2006-01-28 00:31:38 UTC (rev 7961)
+++ trunk/freenet/src/freenet/client/async/MultiPutCompletionCallback.java      
2006-01-28 01:07:36 UTC (rev 7962)
@@ -1,6 +1,5 @@
 package freenet.client.async;

-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.ListIterator;

@@ -19,6 +18,7 @@
        private final PutCompletionCallback cb;
        private ClientPutState generator;
        private final BaseClientPutter parent;
+       private InserterException e;
        private boolean finished;
        private boolean started;

@@ -30,20 +30,26 @@
                finished = false;
        }

-       public synchronized void onSuccess(ClientPutState state) {
-               if(finished) return;
-               waitingFor.remove(state);
-               if(waitingFor.isEmpty() && started) {
-                       complete(null);
+       public void onSuccess(ClientPutState state) {
+               synchronized(this) {
+                       if(finished) return;
+                       waitingFor.remove(state);
+                       if(!(waitingFor.isEmpty() && started))
+                               return;
                }
+               complete(null);
        }

-       public synchronized void onFailure(InserterException e, ClientPutState 
state) {
-               if(finished) return;
-               waitingFor.remove(state);
-               if(waitingFor.isEmpty()) {
-                       complete(e);
+       public void onFailure(InserterException e, ClientPutState state) {
+               synchronized(this) {
+                       if(finished) return;
+                       waitingFor.remove(state);
+                       if(!(waitingFor.isEmpty() && started)) {
+                               this.e = e;
+                               return;
+                       }
                }
+               complete(e);
        }

        private synchronized void complete(InserterException e) {
@@ -64,8 +70,20 @@
                waitingFor.add(ps);
        }

-       public synchronized void arm() {
-               started = true;
+       public void arm() {
+               boolean allDone;
+               boolean allGotBlocks;
+               synchronized(this) {
+                       started = true;
+                       allDone = waitingFor.isEmpty();
+                       allGotBlocks = waitingForBlockSet.isEmpty();
+               }
+               if(allGotBlocks) {
+                       cb.onBlockSetFinished(this);
+               }
+               if(allDone) {
+                       complete(e);
+               }
        }

        public BaseClientPutter getParent() {

Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-01-28 
00:31:38 UTC (rev 7961)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-01-28 
01:07:36 UTC (rev 7962)
@@ -98,7 +98,30 @@
                } catch (Throwable t) {
                        // Impossible? It keeps on exiting. We get the below,
                        // but not this...
-                       System.err.println(t.getMessage());
+                       try {
+                               System.err.print(t.getClass().getName());
+                               System.err.println();
+                       } catch (Throwable tt) {};
+                       try {
+                               System.err.print(t.getMessage());
+                               System.err.println();
+                       } catch (Throwable tt) {};
+                       try {
+                               System.gc();
+                               System.runFinalization();
+                               System.gc();
+                               System.runFinalization();
+                       } catch (Throwable tt) {}
+                       try {
+                               Runtime r = Runtime.getRuntime();
+                               System.err.print(r.freeMemory());
+                               System.err.println();
+                               System.err.print(r.totalMemory());
+                               System.err.println();
+                       } catch (Throwable tt) {};
+                       try {
+                               t.printStackTrace();
+                       } catch (Throwable tt) {};
                } 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-28 00:31:38 UTC (rev 
7961)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-28 01:07:36 UTC (rev 
7962)
@@ -20,7 +20,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 412;
+       private static final int buildNumber = 413;

        /** Oldest build of Fred we will talk to */
        private static final int lastGoodBuild = 403;


Reply via email to