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) {
+                                                       Logger.minor(this, 
"Packet " + qr.packetNumber + " sent over " + (now - qr.createdTime) + "ms ago 
and still not acked on " + this + " for " + pn);
+                                                       if(now - qr.createdTime 
> 10 * 60 * 1000) {
+                                                               
Logger.error(this, "Packet " + qr.packetNumber + " sent over " + (now - 
qr.createdTime) + "ms ago and still not acked on " + this + " for " + pn);
+                                                               throw new 
StillNotAckedException();
+                                                       }
+                                               }
                                                packetNumbers[realLength++] = 
packetNumber;
                                                if(logMINOR)
                                                        Logger.minor(this, 
"Grabbing ack request " + packetNumber + " (" + realLength + ") from " + this);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to