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;