Author: toad
Date: 2008-01-29 12:52:29 +0000 (Tue, 29 Jan 2008)
New Revision: 17384
Modified:
trunk/freenet/src/freenet/client/FECCodec.java
trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
trunk/freenet/src/freenet/client/async/ClientRequester.java
trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
trunk/freenet/src/freenet/io/comm/PeerContext.java
trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java
trunk/freenet/src/freenet/io/xfer/PartiallyReceivedBulk.java
trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties
trunk/freenet/src/freenet/node/DarknetPeerNode.java
trunk/freenet/src/freenet/node/OpennetManager.java
trunk/freenet/src/freenet/node/PeerManager.java
trunk/freenet/src/freenet/node/RequestHandler.java
trunk/freenet/src/freenet/node/RequestSender.java
trunk/freenet/src/freenet/node/SendableGet.java
trunk/freenet/src/freenet/node/SendableRequest.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
Log:
Un-revert back to 17381 post 1107. Trunk work can now continue.
Modified: trunk/freenet/src/freenet/client/FECCodec.java
===================================================================
--- trunk/freenet/src/freenet/client/FECCodec.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/client/FECCodec.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -163,6 +163,13 @@
if(writers[i] != null)
writers[i].write(realBuffer, i * STRIPE_SIZE,
STRIPE_SIZE);
+
+ // FIXME unfortunately this seems to be
necessary on *nix to prevent
+ // critical threads from starving:
sadly thread priorities only work on
+ // Windows and as of linux 2.6.23, fair
scheduling does not ensure that
+ // the critical threads (those which
set MAX_PRIORITY) get enough CPU time.
+ Thread.yield();
+
}
}
@@ -291,6 +298,13 @@
if(writers[i - k] != null)
writers[i -
k].write(realBuffer, i * STRIPE_SIZE,
STRIPE_SIZE);
+
+ // FIXME unfortunately this seems to be
necessary on *nix to prevent
+ // critical threads from starving:
sadly thread priorities only work on
+ // Windows and as of linux 2.6.23, fair
scheduling does not ensure that
+ // the critical threads (those which
set MAX_PRIORITY) get enough CPU time.
+ Thread.yield();
+
}
}
Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -231,6 +231,11 @@
if(block != null) {
if(logMINOR) Logger.minor(this,
"Can fulfill "+req+" ("+tok+") immediately from store");
getter.onSuccess(block, true,
tok);
+ // FIXME unfortunately this
seems to be necessary on *nix to prevent
+ // critical threads from
starving: sadly thread priorities only work on
+ // Windows and as of linux
2.6.23, fair scheduling does not ensure that
+ // the critical threads (those
which set MAX_PRIORITY) get enough CPU time.
+ Thread.yield();
} else {
anyValid = true;
}
@@ -513,7 +518,8 @@
int tok = keyTokens[i];
ClientKey ckey = getter.getKey(tok);
if(ckey == null) {
- Logger.error(this, "Key "+tok+" is null for
"+getter, new Exception("debug"));
+ if(complain)
+ Logger.error(this, "Key "+tok+" is null
for "+getter, new Exception("debug"));
continue;
}
removePendingKey(getter, complain, ckey.getNodeKey());
Modified: trunk/freenet/src/freenet/client/async/ClientRequester.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequester.java 2008-01-29
12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/client/async/ClientRequester.java 2008-01-29
12:52:29 UTC (rev 17384)
@@ -88,7 +88,7 @@
public void completedBlock(boolean dontNotify) {
if(Logger.shouldLog(Logger.MINOR, this))
- Logger.minor(this, "Completed block ("+dontNotify+ "):
total="+totalBlocks+" success="+successfulBlocks+" failed="+failedBlocks+"
fatally="+fatallyFailedBlocks+" finalised="+blockSetFinalized+" on "+this);
+ Logger.minor(this, "Completed block ("+dontNotify+ "):
total="+totalBlocks+" success="+successfulBlocks+" failed="+failedBlocks+"
fatally="+fatallyFailedBlocks+" finalised="+blockSetFinalized+"
required="+minSuccessBlocks+" on "+this);
synchronized(this) {
successfulBlocks++;
if(dontNotify) return;
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -187,6 +187,11 @@
SplitFileFetcherSegment s = segments[i];
long max = (finalLength < 0 ? 0 : (finalLength
- bytesWritten));
bytesWritten += s.writeDecodedDataTo(os, max);
+ // FIXME unfortunately this seems to be
necessary on *nix to prevent
+ // critical threads from starving: sadly thread
priorities only work on
+ // Windows and as of linux 2.6.23, fair
scheduling does not ensure that
+ // the critical threads (those which set
MAX_PRIORITY) get enough CPU time.
+ Thread.yield();
}
} catch (IOException e) {
throw new FetchException(FetchException.BUCKET_ERROR,
e);
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -475,6 +475,8 @@
}
public synchronized void removeSeg(SplitFileFetcherSubSegment segment) {
+ if(logMINOR)
+ Logger.minor(this, "Removing sub segment: "+segment);
for(int i=0;i<subSegments.size();i++) {
if(segment.equals(subSegments.get(i))) {
subSegments.remove(i);
@@ -488,6 +490,6 @@
SplitFileFetcherSubSegment seg =
(SplitFileFetcherSubSegment) subSegments.get(i);
seg.kill();
}
+ subSegments.clear();
}
-
}
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -246,6 +246,8 @@
if(blockNo < 0) throw new IllegalArgumentException();
Integer i = new Integer(blockNo);
synchronized(this) {
+ if(cancelled)
+ throw new IllegalStateException("Adding block
"+blockNo+" to already cancelled "+this);
blockNums.add(i);
if(dontSchedule) return;
/**
@@ -274,8 +276,13 @@
}
public void possiblyRemoveFromParent() {
+ if(logMINOR)
+ Logger.minor(this, "Possibly removing from parent:
"+this);
synchronized(this) {
if(!blockNums.isEmpty()) return;
+ if(logMINOR)
+ Logger.minor(this, "Definitely removing from
parent: "+this);
+ cancelled = true;
}
segment.removeSeg(this);
unregister();
Modified:
trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
===================================================================
--- trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/clients/http/staticfiles/defaultbookmarks.dat
2008-01-29 12:52:29 UTC (rev 17384)
@@ -19,7 +19,7 @@
BookmarkCategory0.Content.Bookmark2.Name=Another Index
BookmarkCategory0.Content.Bookmark2.Description=Comprehensive categorised
index of freesites and Thaw indexes
BookmarkCategory0.Content.Bookmark2.hasAnActivelink=false
-BookmarkCategory0.Content.Bookmark2.URI=USK at
zQyF2O1o8B4y40w7Twz8y2I9haW3d2DTlxjTHPu7zc8,h2mhQNNE9aQvF~2yKAmKV1uorr7141-QOroBf5hrlbw,AQACAAE/AnotherIndex/50/
+BookmarkCategory0.Content.Bookmark2.URI=USK at
zQyF2O1o8B4y40w7Twz8y2I9haW3d2DTlxjTHPu7zc8,h2mhQNNE9aQvF~2yKAmKV1uorr7141-QOroBf5hrlbw,AQACAAE/AnotherIndex/51/
BookmarkCategory1.Name=Freenet devel's flogs
BookmarkCategory1.Content.BookmarkCategory=0
BookmarkCategory1.Content.Bookmark=4
Modified: trunk/freenet/src/freenet/io/comm/PeerContext.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/PeerContext.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/io/comm/PeerContext.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -50,4 +50,7 @@
/** Get a WeakReference to this context. Hopefully there is only one of
these for the whole object; they are quite
* expensive. */
WeakReference getWeakRef();
+
+ /** Compact toString() */
+ String shortToString();
}
Modified: trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java 2008-01-29
12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/io/xfer/BulkTransmitter.java 2008-01-29
12:52:29 UTC (rev 17384)
@@ -47,6 +47,7 @@
/** Not expecting a response? */
final boolean noWait;
private long finishTime=-1;
+ private String cancelReason;
/**
* Create a bulk data transmitter.
@@ -77,7 +78,7 @@
prb.usm.addAsyncFilter(MessageFilter.create().setNoTimeout().setSource(peer).setType(DMT.FNPBulkReceiveAborted).setField(DMT.UID,
uid),
new AsyncMessageFilterCallback() {
public void onMatched(Message
m) {
- cancel();
+ cancel("Other side sent
FNPBulkReceiveAborted");
}
public boolean shouldTimeout() {
synchronized(BulkTransmitter.this) {
@@ -120,7 +121,7 @@
}
});
} catch (DisconnectedException e) {
- cancel();
+ cancel("Disconnected");
throw e;
}
packetSize = DMT.bulkPacketTransmitSize(prb.blockSize) +
@@ -159,10 +160,13 @@
}
}
- public void cancel() {
+ public void cancel(String reason) {
+ if(Logger.shouldLog(Logger.MINOR, this))
+ Logger.minor(this, "Cancelling "+this);
sendAbortedMessage();
synchronized(this) {
cancelled = true;
+ cancelReason = reason;
notifyAll();
}
prb.remove(this);
@@ -184,9 +188,14 @@
* @return True if the file was successfully sent. False otherwise.
*/
public boolean send() {
+ boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
long lastSentPacket = System.currentTimeMillis();
while(true) {
- if(prb.isAborted()) return false;
+ if(prb.isAborted()) {
+ if(logMINOR)
+ Logger.minor(this, "Aborted "+this);
+ return false;
+ }
int blockNo;
if(peer.getBootID() != peerBootID) {
synchronized(this) {
@@ -194,6 +203,8 @@
notifyAll();
}
prb.remove(BulkTransmitter.this);
+ if(logMINOR)
+ Logger.minor(this, "Failed to send
"+uid+": peer restarted: "+peer);
return false;
}
synchronized(this) {
@@ -218,7 +229,7 @@
long end = System.currentTimeMillis();
if(end - lastSentPacket > TIMEOUT) {
Logger.error(this, "Send timed out on
"+this);
- cancel();
+ cancel("Timeout");
return false;
}
continue;
@@ -226,6 +237,8 @@
// Send a packet
byte[] buf = prb.getBlockData(blockNo);
if(buf == null) {
+ if(logMINOR)
+ Logger.minor(this, "Block "+blockNo+"
is null, presumably the send is cancelled: "+this);
// Already cancelled, quit
return false;
}
@@ -248,6 +261,8 @@
}
if(cancelled) {
masterThrottle.recycle(packetSize);
+ if(logMINOR)
+
Logger.minor(this, "Cancelled after sleeping for throttle "+this);
return false;
}
}
@@ -264,10 +279,19 @@
}
lastSentPacket = System.currentTimeMillis();
} catch (NotConnectedException e) {
- cancel();
+ cancel("Disconnected");
+ if(logMINOR)
+ Logger.minor(this, "Canclled: not
connected "+this);
return false;
}
}
}
+ public String toString() {
+ return "BulkTransmitter:"+uid+":"+peer.shortToString();
+ }
+
+ public String getCancelReason() {
+ return cancelReason;
+ }
}
Modified: trunk/freenet/src/freenet/io/xfer/PartiallyReceivedBulk.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/PartiallyReceivedBulk.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/io/xfer/PartiallyReceivedBulk.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -183,4 +183,12 @@
}
transmitters = newTrans;
}
+
+ public int getAbortReason() {
+ return _abortReason;
+ }
+
+ public String getAbortDescription() {
+ return _abortDescription;
+ }
}
Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties 2008-01-29
12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.de.properties 2008-01-29
12:52:29 UTC (rev 17384)
@@ -495,6 +495,9 @@
InsertException.shortError.8=Anfrage konnte den Knoten nicht verlassen
InsertException.shortError.9=Kollision mit existierenden Daten
IntOption.parseError=Der gegebene Wert konnte nicht als 32-bit-Ganzzahl
erkannt werden: ${val}
+InvalidAddressOverrideUserAlert.unknownAddress=Freenet hat festgestellt, dass
der im Moment eingestellte ipAddressOverride(ipAdressen?berschrieb)-Wert
ung?ltig ist, soll hei?en dass er nicht der Syntax f?r einen g?ltigen
Host-Namen, eine IPv4-Adresse oder eine IPv6-Adresse entspricht (nach der
Meinung der aktuellen Implementierung der Funktion die die IPv6-Adress-Syntax
?berpr?ft).
+InvalidAddressOverrideUserAlert.unknownAddressTitle=Ung?ltiger Wert f?r die
Ersetzung der Adresse
+InvalidAddressOverrideUserAlert.unknownAddressWithConfigLink=Freenet hat
festgestellt, dass der im Moment eingestellte
ipAddressOverride(ipAdressen?berschrieb)-Wert ung?ltig ist, soll hei?en dass er
nicht der Syntax f?r einen g?ltigen Host-Namen, eine IPv4-Adresse oder eine
IPv6-Adresse entspricht (nach der Meinung der aktuellen Implementierung der
Funktion die die IPv6-Adress-Syntax ?berpr?ft). Sie k?nnen den
${link}"IP-Adresse ?berschreiben"-Parameter${/link} korrigieren.
JPEGFilter.notJpeg=Die Datei, die Sie versucht haben abzurufen, ist keine
JPEG-Datei. Es k?nnte sich um ein anderes Format handeln und Ihr Browser k?nnte
etwas gef?hrliches damit tun, deshalb haben wir sie blockiert.
JPEGFilter.tooShort=Die Datei ist zu klein um eine JPEG-Datei zu sein.
JPEGFilter.tooShortTitle=Zu klein
@@ -957,6 +960,8 @@
StatisticsToadlet.outputRate=Ausgehend: ${rate}/Sekunde (von ${max})
StatisticsToadlet.payloadOutput=Nutzlast ausgehend: ${total}
(${rate}/Sekunde)(${percent}%)
StatisticsToadlet.peerStatsTitle=Partner-Statistiken
+StatisticsToadlet.routingDisabled=Nicht weiterleiten (wir sind zurzeit mit dem
Knoten verbunden, aber wir oder er weigern uns (Daten-)Verkehr weiterzuleiten)
+StatisticsToadlet.routingDisabledShort=Nicht weiterleiten
StatisticsToadlet.statisticGatheringTitle=Verschiedene Statistiken
StatisticsToadlet.threadDumpButton=Thread-Dump generieren
StatisticsToadlet.threads=Laufende Threads: ${running}/${max}
Modified: trunk/freenet/src/freenet/node/DarknetPeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/DarknetPeerNode.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -911,7 +911,7 @@
}
public void onRejected() {
- transmitter.cancel();
+ transmitter.cancel("FileOffer: Offer rejected");
// FIXME prb's can't be shared, right? Well they aren't
here...
prb.abort(RetrievalException.CANCELLED_BY_RECEIVER,
"Cancelled by receiver");
}
Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/OpennetManager.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -24,6 +24,7 @@
import freenet.io.comm.Peer;
import freenet.io.comm.PeerParseException;
import freenet.io.comm.ReferenceSignatureVerificationException;
+import freenet.io.comm.RetrievalException;
import freenet.io.xfer.BulkReceiver;
import freenet.io.xfer.BulkTransmitter;
import freenet.io.xfer.PartiallyReceivedBulk;
@@ -614,7 +615,11 @@
if(logMINOR)
Logger.minor(this, "Receiving noderef (reply="+isReply+") as
bulk transfer for request uid "+uid+" with transfer "+xferUID+" from "+source);
if(!br.receive()) {
- Logger.error(this, "Failed to receive noderef bulk transfer for
"+this);
+ String msg = "Failed to receive noderef bulk transfer for
"+this+" : "+RetrievalException.getErrString(prb.getAbortReason())+" :
"+prb.getAbortDescription();
+ if(prb.getAbortReason() !=
RetrievalException.SENDER_DISCONNECTED)
+ Logger.error(this, msg);
+ else
+ Logger.normal(this, msg);
if(sendReject) rejectRef(uid, source,
DMT.NODEREF_REJECTED_TRANSFER_FAILED, ctr);
return null;
}
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -1172,7 +1172,7 @@
if(statuses.containsKey(peerNodeStatus)) {
statusSet = (HashSet)
statuses.get(peerNodeStatus);
if(statusSet.contains(peerNode)) {
- if(!noLog) Logger.error(this,
"addPeerNodeStatus(): identity '"+peerNode.getIdentityString()+"' already in
peerNodeStatuses as "+peerNode.getPeer()+" with status
'"+PeerNode.getPeerNodeStatusString(peerNodeStatus.intValue())+"'", new
Exception("debug"));
+ if(!noLog) Logger.error(this,
"addPeerNodeStatus(): node already in peerNodeStatuses: "+peerNode+" status
"+PeerNode.getPeerNodeStatusString(peerNodeStatus.intValue()));
return;
}
statuses.remove(peerNodeStatus);
Modified: trunk/freenet/src/freenet/node/RequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestHandler.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/RequestHandler.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -228,7 +228,7 @@
this.status=status;
if (now > responseDeadline) {
- Logger.error(this, "requestsender took too long to
respond to requestor ("+TimeUtil.formatTime((now - searchStartTime), 2,
true)+"/"+rs.getStatus()+")");
+ Logger.error(this, "requestsender took too long to
respond to requestor ("+TimeUtil.formatTime((now - searchStartTime), 2,
true)+"/"+rs.getStatusString()+")");
applyByteCounts();
unregisterRequestHandlerWithNode();
return;
Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/RequestSender.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -91,6 +91,37 @@
static final int RECENTLY_FAILED = 9;
private PeerNode successFrom;
+ static String getStatusString(int status) {
+ switch(status) {
+ case NOT_FINISHED:
+ return "NOT FINISHED";
+ case SUCCESS:
+ return "SUCCESS";
+ case ROUTE_NOT_FOUND:
+ return "ROUTE NOT FOUND";
+ case DATA_NOT_FOUND:
+ return "DATA NOT FOUND";
+ case TRANSFER_FAILED:
+ return "TRANSFER FAILED";
+ case VERIFY_FAILURE:
+ return "VERIFY FAILURE";
+ case TIMED_OUT:
+ return "TIMED OUT";
+ case GENERATED_REJECTED_OVERLOAD:
+ return "GENERATED REJECTED OVERLOAD";
+ case INTERNAL_ERROR:
+ return "INTERNAL ERROR";
+ case RECENTLY_FAILED:
+ return "RECENTLY FAILED";
+ default:
+ return "UNKNOWN STATUS CODE: "+status;
+ }
+ }
+
+ String getStatusString() {
+ return getStatusString(getStatus());
+ }
+
private static boolean logMINOR;
public String toString() {
Modified: trunk/freenet/src/freenet/node/SendableGet.java
===================================================================
--- trunk/freenet/src/freenet/node/SendableGet.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/SendableGet.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -63,6 +63,12 @@
return false;
}
}
+ if(key == null) {
+ if(!isCancelled()) {
+ Logger.error(this, "Not cancelled but
key "+keyNum+" is null?! on "+this);
+ return false;
+ }
+ }
ClientKeyBlock block;
try {
try {
Modified: trunk/freenet/src/freenet/node/SendableRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/SendableRequest.java 2008-01-29 12:49:22 UTC
(rev 17383)
+++ trunk/freenet/src/freenet/node/SendableRequest.java 2008-01-29 12:52:29 UTC
(rev 17384)
@@ -1,6 +1,7 @@
package freenet.node;
import freenet.client.async.ClientRequester;
+import freenet.support.Logger;
import freenet.support.RandomGrabArray;
import freenet.support.RandomGrabArrayItem;
@@ -56,7 +57,13 @@
public void unregister() {
RandomGrabArray arr = getParentGrabArray();
- if(arr != null) arr.remove(this);
+ if(arr != null) {
+ arr.remove(this);
+ } else {
+ // Should this be a higher priority?
+ if(Logger.shouldLog(Logger.MINOR, this))
+ Logger.minor(this, "Cannot unregister "+this+"
: not registered", new Exception("debug"));
+ }
}
/** Requeue after an internal error */
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-01-29 12:49:22 UTC (rev
17383)
+++ trunk/freenet/src/freenet/node/Version.java 2008-01-29 12:52:29 UTC (rev
17384)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1107;
+ private static final int buildNumber = 1106;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 1106;
- private static final int newLastGoodBuild = 1107;
+ private static final int oldLastGoodBuild = 1104;
+ private static final int newLastGoodBuild = 1106;
static final long transitionTime;
static {
final Calendar _cal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
// year, month - 1 (or constant), day, hour, minute, second
- _cal.set( 2008, Calendar.JANUARY, 30, 0, 0, 0 );
+ _cal.set( 2008, Calendar.JANUARY, 29, 18, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}
Modified: trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-01-29 12:49:22 UTC (rev 17383)
+++ trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-01-29 12:52:29 UTC (rev 17384)
@@ -503,7 +503,7 @@
final Runnable r = new Runnable() {
public void run() {
if(!bt.send()) {
- Logger.error(this, "Failed to send
revocation key blob to "+source.userToString());
+ Logger.error(this, "Failed to send
revocation key blob to "+source.userToString()+" : "+bt.getCancelReason());
} else {
Logger.normal(this, "Sent revocation
key blob to "+source.userToString());
}
@@ -876,7 +876,7 @@
final Runnable r = new Runnable() {
public void run() {
if(!bt.send()) {
- Logger.error(this, "Failed to send main
jar blob to "+source.userToString());
+ Logger.error(this, "Failed to send main
jar blob to "+source.userToString()+" : "+bt.getCancelReason());
} else {
Logger.normal(this, "Sent main jar blob
to "+source.userToString());
}