Author: toad
Date: 2009-01-15 22:41:31 +0000 (Thu, 15 Jan 2009)
New Revision: 25069

Modified:
   trunk/freenet/src/freenet/node/NodeStats.java
   trunk/freenet/src/freenet/node/RequestSender.java
Log:
Stats, fix NPE


Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java       2009-01-15 22:15:40 UTC 
(rev 25068)
+++ trunk/freenet/src/freenet/node/NodeStats.java       2009-01-15 22:41:31 UTC 
(rev 25069)
@@ -1315,6 +1315,22 @@
                                row.addChild("td", 
thousendPoint.format(averages[i].countReports()));
                        }
                }
+               
+               row = list.addChild("tr");
+               row.addChild("td", "Turtle requests");
+               long total;
+               long succeeded;
+               synchronized(this) {
+                       total = turtleSuccesses + turtleTransfersCompleted;
+                       succeeded = turtleSuccesses;
+               }
+               if(total == 0) {
+                       row.addChild("td", "-");
+                       row.addChild("td", "0");
+               } else {
+                       row.addChild("td", fix3p3pct.format((double)succeeded / 
total));
+                       row.addChild("td", thousendPoint.format(total));
+               }
        }
 
        /* Total bytes sent by requests, excluding payload */
@@ -1940,4 +1956,16 @@
                row.addChild("td", "Average");
                row.addChild("td", 
TimeUtil.formatTime((long)localCHKFetchTimeAverage.currentValue(), 2, true));
        }
+       
+       private long turtleTransfersCompleted;
+       private long turtleSuccesses;
+       
+       synchronized void turtleSucceeded() {
+               turtleSuccesses++;
+               turtleTransfersCompleted++;
+       }
+       
+       synchronized void turtleFailed() {
+               turtleTransfersCompleted++;
+       }
 }

Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java   2009-01-15 22:15:40 UTC 
(rev 25068)
+++ trunk/freenet/src/freenet/node/RequestSender.java   2009-01-15 22:41:31 UTC 
(rev 25069)
@@ -817,6 +817,7 @@
                                                System.err.println("TURTLE 
SUCCEEDED: "+key+" for "+this+" in "+TimeUtil.formatTime(transferTime, 2, 
true));
                                                if(!turtleBackedOff)
                                                        
next.transferFailed("Turtled transfer");
+                                               
node.nodeStats.turtleSucceeded();
                                        }
                                next.successNotOverload();
                                if(turtle) {
@@ -836,13 +837,16 @@
                                        finish(SUCCESS, next, false);
                                        return;
                                } catch (RetrievalException e) {
+                                       boolean turtle;
                                        synchronized(this) {
-                                               if(turtleMode) {
-                                               System.err.println("TURTLE 
FAILED: "+key+" for "+this+" : "+e);
-                                               
next.unregisterTurtleTransfer(this);
-                                               
node.unregisterTurtleTransfer(this);
-                                               }
+                                               turtle = turtleMode;
                                        }
+                                       if(turtle) {
+                                               System.err.println("TURTLE 
FAILED: "+key+" for "+this+" : "+e);
+                                       next.unregisterTurtleTransfer(this);
+                                       node.unregisterTurtleTransfer(this);
+                                       node.nodeStats.turtleFailed();
+                                       }
                                                        if 
(e.getReason()==RetrievalException.SENDER_DISCONNECTED)
                                                                
Logger.normal(this, "Transfer failed (disconnect): "+e, e);
                                                        else
@@ -1484,11 +1488,14 @@
                node.getTicker().queueTimedJob(new Runnable() {
 
                        public void run() {
+                               PeerNode from;
                                synchronized(RequestSender.this) {
                                        if(sentBackoffTurtle) return;
                                        sentBackoffTurtle = true;
+                                       from = transferringFrom;
+                                       if(from == null) return;
                                }
-                               transferringFrom.transferFailed("Turtled 
transfer");
+                               from.transferFailed("Turtled transfer");
                        }
                        
                }, 30*1000);

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

Reply via email to