Update of /cvsroot/freenet/freenet/src/freenet/node/states/request
In directory sc8-pr-cvs1:/tmp/cvs-serv15810/src/freenet/node/states/request

Modified Files:
        Pending.java RequestDone.java SendFinished.java 
Log Message:
6249:
Iakin's fix for Request.java - nasty bug, may have caused requests from recent nodes 
to fail.
Try to fix lock contention in RandomAccessFilePool. Code review would be appreciated. 
Catch Throwables when closing files.
Reduce outLimitCutoff to 80%. Thus the node will reject all queries if it is using 
more than 80% of outbound bandwidth. The previous 90% figure conflicted with the hard 
bandwidth limit of 120%, which (because it is deliberately conservative), was 
preventing it from going over 90%.
Implement removal of PeerHandlers from OCM, when either
a) No connections and no contact details, and not in routing table, regardless of 
whether we have queued messages or
b) No connections, no messages.
- Some tricky concurrency issues, hence the new RemovingPeerHandlerException
Track number and last event time for outbound connection attempts, successes, and 
failures, in PeerHandler.
Add PeerHandler.probablyNotConnectable()
Don't queue messages if we are unlikely to be able to open a connection and we have no 
current connections
Diagnostics - messageSendTime* especially. Added messageSendTime{Request,NonRequest}, 
fixed messageSendTimeNoQR.
Make sending a QR because of a loop in RequestDone asynchronous.
Don't add PeerHandlers with null IDs in OCM (probably not used).
Lots of logging, a few toString()'s, indenting
- remove some spurious logging, for example, Accepted before SendFinished is okay 
unless it's a lot before it, or the SendFinished is unsuccessful


Index: Pending.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/states/request/Pending.java,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -w -r1.73 -r1.74
--- Pending.java        14 Oct 2003 17:52:49 -0000      1.73
+++ Pending.java        15 Oct 2003 21:15:48 -0000      1.74
@@ -347,7 +347,8 @@
            n.logger.log(this, "Backtracking", Logger.DEBUG);
         try {
            Message m = new QueryRejected(id, hopsToLive, "Looped request", 
r.otherFields);
-           RequestSendCallback cb = new RequestSendCallback("QueryRejected (looped "+
+           RequestSendCallback cb = 
+               new RequestSendCallback("QueryRejected (looped "+
                                                             "request) for "+this, n, 
this);
            n.sendMessageAsync(m, r.getSource(), cb);
         } catch (CommunicationException e) {
@@ -374,7 +375,8 @@
            if(outwardSender != null) {
                n.logger.log(this, "Got Accepted before got SendFinished "+
                             outwardSender+" on "+this, 
-                            Logger.ERROR /* FIXME */);
+                            Logger.DEBUG /* FIXME */);
+               outwardSender.mustHaveSucceeded();
                outwardSender.cancel();
                outwardSender = null;
            }

Index: RequestDone.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/states/request/RequestDone.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -w -r1.4 -r1.5
--- RequestDone.java    18 Sep 2003 17:48:12 -0000      1.4
+++ RequestDone.java    15 Oct 2003 21:15:49 -0000      1.5
@@ -53,15 +53,17 @@
             try {
                 Request r = (Request) mo;
                 if (r.getSource() != null) {
-                    n.sendMessage(
-                        new QueryRejected(id, r.hopsToLive - 1, "Looped request", 
r.otherFields),
-                        r.getSource(), 0
-                    );
+                   QueryRejected qr =
+                       new QueryRejected(id, r.hopsToLive - 1, 
+                                         "Looped request", r.otherFields);
+                   RequestSendCallback cb = 
+                       new RequestSendCallback("QueryRejected (looped "+
+                                               "request) for "+this, n, this);
+                    n.sendMessageAsync(qr, r.getSource(), cb);
                 }
             } catch (CommunicationException e) {
-                n.logger.log(this,
-                    "Failed to backtrack on chain " + Long.toHexString(id),
-                    e, Logger.DEBUG);
+                n.logger.log(this, "Failed to backtrack on chain " + 
+                            Long.toHexString(id), e, Logger.DEBUG);
             }
             return this;
         }

Index: SendFinished.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/node/states/request/SendFinished.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -w -r1.9 -r1.10
--- SendFinished.java   14 Oct 2003 00:43:14 -0000      1.9
+++ SendFinished.java   15 Oct 2003 21:15:49 -0000      1.10
@@ -15,6 +15,7 @@
     
     final long initTime;
     private long finishTime;
+    private long mustHaveSucceededTime = -1;
     private Exception finishException;
     private boolean succeeded;
     final Node n;
@@ -71,9 +72,16 @@
        if(n.logger.shouldLog(Logger.DEBUG,this))
            n.logger.log(this, toString() + " succeeded",
                         Logger.DEBUG);
+       if(mustHaveSucceededTime != -1 &&
+          finishTime - mustHaveSucceededTime > 10*1000)
+           Core.logger.log(this, "SendFinished succeeded 
"+((finishTime-mustHaveSucceededTime)/1000)+" seconds after its effect!", 
Logger.ERROR);
        n.schedule(this, true);
     }
     
+    public void mustHaveSucceeded() {
+       mustHaveSucceededTime = System.currentTimeMillis();
+    }
+    
     public void thrown(Exception e) {
        finishTime = System.currentTimeMillis();
        succeeded = false;
@@ -85,8 +93,12 @@
                         " ("+this+")", e, Logger.MINOR);
        } else {
            n.logger.log(this, "Unexpected exception sending for "+
-                        this+": "+e, e, Logger.NORMAL);
+                        this+": "+e, e == null ? new Exception("debug") : e,
+                        Logger.NORMAL);
        }
+       if(mustHaveSucceededTime != -1 && 
+          finishTime - mustHaveSucceededTime > 10*1000)
+           Core.logger.log(this, "SendFinished failed ("+e+") 
"+((finishTime-mustHaveSucceededTime)/1000)+" seconds after its effect!", 
Logger.ERROR);
        n.schedule(this);
     }
     

_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to