On Thu, Nov 13, 2008 at 10:17 PM, <toad at freenetproject.org> wrote:
> Author: toad
> Date: 2008-11-13 14:17:32 +0000 (Thu, 13 Nov 2008)
> New Revision: 23519
>
> Modified:
> trunk/freenet/src/freenet/node/FNPPacketMangler.java
> trunk/freenet/src/freenet/node/KeyTracker.java
> Log:
> Solve the logging part of the problem:
> Log only at minor when a message is not acked, but after 10 minutes,
> forceDisconnect().
>
>
> Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2008-11-12
> 17:29:40 UTC (rev 23518)
> +++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2008-11-13
> 14:17:32 UTC (rev 23519)
> @@ -2341,6 +2341,7 @@
>
> int otherSideSeqNumber;
>
> + try {
> synchronized(tracker) {
> acks = tracker.grabAcks();
> forgotPackets = tracker.grabForgotten();
> @@ -2350,6 +2351,11 @@
> otherSideSeqNumber =
> tracker.highestReceivedIncomingSeqNumber();
> if(logMINOR) Logger.minor(this, "Sending packet to
> "+tracker.pn.getPeer()+", other side max seqno: "+otherSideSeqNumber);
> }
> + } catch (StillNotAckedException e) {
> + Logger.error(this, "Forcing disconnect on
> "+tracker.pn+" for "+tracker+" because packets not acked after 10 minutes!");
> + tracker.pn.forceDisconnect(true);
> + throw new NotConnectedException();
> + }
>
> int packetLength = 4 + // seq number
> RANDOM_BYTES_LENGTH + // random junk
>
> Modified: trunk/freenet/src/freenet/node/KeyTracker.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/KeyTracker.java 2008-11-12 17:29:40
> UTC (rev 23518)
> +++ trunk/freenet/src/freenet/node/KeyTracker.java 2008-11-13 14:17:32
> UTC (rev 23519)
> @@ -831,7 +831,7 @@
> return trimmedPacketNumbers;
> }
>
> - public int[] grabAckRequests() throws NotConnectedException {
> + public int[] grabAckRequests() throws NotConnectedException,
> StillNotAckedException {
> UpdatableSortedLinkedListItem[] items;
> int[] packetNumbers;
> int realLength;
> @@ -854,8 +854,13 @@
>
> ackRequestQueue.remove(qr);
> continue;
> }
> - if(now - qr.createdTime > 2 *
> 60 * 1000)
> - Logger.error(this,
> "Packet " + qr.packetNumber + " sent over " + (now - qr.createdTime) + "ms
> ago and still not acked on " + this + " for " + pn);
> + if(now - qr.createdTime > 2 *
> 60 * 1000 && logMINOR) {
[...]
> + throw new
> StillNotAckedException();
1) behaviour change is bad
2) throw the exception *ONLY* if logMINOR is set, which is even worse.