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.

Reply via email to