Author: toad
Date: 2006-08-11 21:33:20 +0000 (Fri, 11 Aug 2006)
New Revision: 10042

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
   trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/PacketSender.java
   trunk/freenet/src/freenet/node/TestnetHandler.java
   trunk/freenet/src/freenet/node/TextModeClientInterface.java
   trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
   trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java
   trunk/freenet/src/freenet/node/updater/NodeUpdater.java
Log:
pInstantReject.
Shutdown logging.

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-08-11 18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-08-11 21:33:20 UTC (rev 10042)
@@ -158,6 +158,7 @@
                        overviewList.addChild("li", "nodeUptime:\u00a0" + 
nodeUptimeString);
                        overviewList.addChild("li", 
"missRoutingDistance:\u00a0" + fix4.format(missRoutingDistance));
                        overviewList.addChild("li", "backedoffPercent:\u00a0" + 
fix1.format(backedoffPercent));
+                       overviewList.addChild("li", "pInstantReject:\u00a0" + 
fix1.format(node.pRejectIncomingInstantly()));
                        nextTableCell = overviewTableRow.addChild("td");
                }


Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-08-11 
18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-08-11 
21:33:20 UTC (rev 10042)
@@ -50,7 +50,7 @@
                        MultiValueTable headers = new MultiValueTable();
                        headers.put("Location", 
".?shutdownconfirm="+node.formPassword.hashCode());
                        ctx.sendReplyHeaders(302, "Found", headers, null, 0);
-                       this.node.exit();
+                       this.node.exit("Shutdown from fproxy");
                        return;
                }else if(request.getParam("restartconfirm").length() > 0){
                        // Do the actual restart

Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-08-11 
18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java     2006-08-11 
21:33:20 UTC (rev 10042)
@@ -99,20 +99,20 @@
                                                                        
System.err.println("Exiting on deadlock, but not running in the wrapper! Please 
restart the node manually.");

                                                                // No wrapper : 
we don't want to let it harm the network!
-                                                               node.exit();
+                                                               node.exit("USM 
deadlock");
                                                        }
                                                } catch (Throwable t) {
                                                        if(!hasRedirected) {
                                                                
System.err.println("Error : can't restart the node : consider installing the 
wrapper. PLEASE REPORT THAT ERROR TO devl at freenetproject.org");
                                                                
t.printStackTrace();
                                                        }
-                                                       node.exit();
+                                                       node.exit("USM deadlock 
and error");
                                                }
                                        }
                                } else {
                                        Logger.error(this, "MAIN LOOP 
TERMINATED");
                                        System.err.println("MAIN LOOP 
TERMINATED!");
-                                       
System.exit(freenet.node.Node.EXIT_MAIN_LOOP_LOST);
+                                       node.exit(Node.EXIT_MAIN_LOOP_LOST);
                                }
                        }
                }

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-08-11 18:16:19 UTC (rev 
10041)
+++ trunk/freenet/src/freenet/node/Node.java    2006-08-11 21:33:20 UTC (rev 
10042)
@@ -601,6 +601,8 @@
        public boolean nodeAveragePingAlertRelevant;
        /** If true, include local addresses on noderefs */
        public boolean includeLocalAddressesInNoderefs;
+       /** Average proportion of requests rejected immediately due to overload 
*/
+       public final TimeDecayingRunningAverage pInstantRejectIncoming;

        private final HashSet runningUIDs;

@@ -986,6 +988,7 @@
                byte[] pwdBuf = new byte[16];
                random.nextBytes(pwdBuf);
                this.formPassword = Base64.encode(pwdBuf);
+               pInstantRejectIncoming = new TimeDecayingRunningAverage(0, 
60000, 0.0, 1.0);
                nodeStarter=ns;
                if(logConfigHandler != lc)
                        logConfigHandler=lc;
@@ -2433,13 +2436,16 @@
                                if((now - lastAcceptedRequest > 
MAX_INTERREQUEST_TIME) && canAcceptAnyway) {
                                        Logger.minor(this, "Accepting request 
anyway (take one every 10 secs to keep bwlimitDelayTime updated)");
                                        lastAcceptedRequest = now;
+                                       pInstantRejectIncoming.report(0.0);
                                        return null;
                                }
+                               pInstantRejectIncoming.report(1.0);
                                return ">MAX_PING_TIME ("+pingTime+")";
                        }
                        if(pingTime > SUB_MAX_PING_TIME) {
                                double x = ((double)(pingTime - 
SUB_MAX_PING_TIME)) / (MAX_PING_TIME - SUB_MAX_PING_TIME);
                                if(random.nextDouble() < x) {
+                                       pInstantRejectIncoming.report(1.0);
                                        return ">SUB_MAX_PING_TIME 
("+pingTime+")";
                                }
                        }
@@ -2449,18 +2455,21 @@
                                if((now - lastAcceptedRequest > 
MAX_INTERREQUEST_TIME) && canAcceptAnyway) {
                                        Logger.minor(this, "Accepting request 
anyway (take one every 10 secs to keep bwlimitDelayTime updated)");
                                        lastAcceptedRequest = now;
+                                       pInstantRejectIncoming.report(0.0);
                                        return null;
                                }
+                               pInstantRejectIncoming.report(1.0);
                                return ">MAX_THROTTLE_DELAY 
("+bwlimitDelayTime+")";
                        }
                        if(bwlimitDelayTime > SUB_MAX_THROTTLE_DELAY) {
                                double x = ((double)(bwlimitDelayTime - 
SUB_MAX_THROTTLE_DELAY)) / (MAX_THROTTLE_DELAY - SUB_MAX_THROTTLE_DELAY);
                                if(random.nextDouble() < x) {
+                                       pInstantRejectIncoming.report(1.0);
                                        return ">SUB_MAX_THROTTLE_DELAY 
("+bwlimitDelayTime+")";
                                }
                        }

-                       Logger.minor(this, "Accepting request");
+                       Logger.minor(this, "Accepting request?");

                        lastAcceptedRequest = now;
                }
@@ -2470,16 +2479,22 @@
                        (isInsert ? (isSSK ? 
this.remoteSskInsertBytesSentAverage : this.remoteChkInsertBytesSentAverage)
                                        : (isSSK ? 
this.remoteSskFetchBytesSentAverage : 
this.remoteChkFetchBytesSentAverage)).currentValue();
                int expectedSent = (int)Math.max(expected, 0);
-               if(!requestOutputThrottle.instantGrab(expectedSent)) return 
"Insufficient output bandwidth";
+               if(!requestOutputThrottle.instantGrab(expectedSent)) {
+                       pInstantRejectIncoming.report(1.0);
+                       return "Insufficient output bandwidth";
+               }
                expected = 
                        (isInsert ? (isSSK ? 
this.remoteSskInsertBytesReceivedAverage : 
this.remoteChkInsertBytesReceivedAverage)
                                        : (isSSK ? 
this.remoteSskFetchBytesReceivedAverage : 
this.remoteChkFetchBytesReceivedAverage)).currentValue();
                int expectedReceived = (int)Math.max(expected, 0);
                if(!requestInputThrottle.instantGrab(expectedReceived)) {
                        requestOutputThrottle.recycle(expectedSent);
+                       pInstantRejectIncoming.report(1.0);
                        return "Insufficient input bandwidth";
                }
-               
+
+               pInstantRejectIncoming.report(0.0);
+
                // Accept
                return null;
        }
@@ -3385,12 +3400,25 @@
                this.fcpServer = fcp;
        }

-       public void exit(){
-               this.park();
-               System.out.println("Goodbye. from "+this);
-               System.exit(0);
+       public void exit(int reason) {
+               try {
+                       this.park();
+                       System.out.println("Goodbye.");
+                       System.out.println(reason);
+               } finally {
+                       System.exit(reason);
+               }
        }

+       public void exit(String reason){
+               try {
+                       this.park();
+                       System.out.println("Goodbye. from "+this+" 
("+reason+")");
+               } finally {
+                       System.exit(0);
+               }
+       }
+       
        /**
         * Get the node into a state where it can be stopped safely
         * May be called twice - once in exit (above) and then again
@@ -3850,4 +3878,8 @@
                else
                        Logger.error(this, "Don't know what to do with 
"+block+" should be queued for reinsert");
        }
+
+       public double pRejectIncomingInstantly() {
+               return pInstantRejectIncoming.currentValue();
+       }
 }

Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java    2006-08-11 18:16:19 UTC 
(rev 10041)
+++ trunk/freenet/src/freenet/node/PacketSender.java    2006-08-11 21:33:20 UTC 
(rev 10042)
@@ -80,14 +80,14 @@
                                                                
System.err.println("Exiting on deadlock, but not running in the wrapper! Please 
restart the node manually.");

                                                        // No wrapper : we 
don't want to let it harm the network!
-                                                       node.exit();
+                                                       node.exit("PacketSender 
deadlock");
                                                }
                                        } catch (Throwable t) {
                                                
if(!Node.logConfigHandler.getFileLoggerHook().hasRedirectedStdOutErrNoLock()) {
                                                        
System.err.println("Error : can't restart the node : consider installing the 
wrapper. PLEASE REPORT THAT ERROR TO devl at freenetproject.org");
                                                        t.printStackTrace();
                                                }
-                                               node.exit();
+                                               node.exit("PacketSender 
deadlock and error");
                                        }

                                }

Modified: trunk/freenet/src/freenet/node/TestnetHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/TestnetHandler.java  2006-08-11 18:16:19 UTC 
(rev 10041)
+++ trunk/freenet/src/freenet/node/TestnetHandler.java  2006-08-11 21:33:20 UTC 
(rev 10042)
@@ -78,7 +78,7 @@
                                Logger.normal(this,"Starting testnet server on 
port"+testnetPort);
                        } catch (IOException e) {
                                Logger.error(this, "Could not bind to testnet 
port: "+testnetPort);
-                               System.exit(Node.EXIT_TESTNET_FAILED);
+                               node.exit(Node.EXIT_TESTNET_FAILED);
                                return;
                        }
                        while(!server.isClosed()) {
@@ -101,7 +101,7 @@
                                this.testnetPort=port;
                        }catch( IOException e){
                                Logger.error(this, "Error while stopping the 
testnet handler.");
-                               System.exit(Node.EXIT_TESTNET_FAILED);
+                               node.exit(Node.EXIT_TESTNET_FAILED);
                                return;
                        }
                }

Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-08-11 
18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-08-11 
21:33:20 UTC (rev 10042)
@@ -325,7 +325,7 @@
                sb.append("Shutting node down.\r\n");
                out.write(sb.toString().getBytes());
                out.flush();
-               n.exit();
+               n.exit("Shutdown from console");
        } else if(uline.startsWith("RESTART")) {
                StringBuffer sb = new StringBuffer();
                sb.append("Restarting the node.\r\n");

Modified: trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java   
2006-08-11 18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java   
2006-08-11 21:33:20 UTC (rev 10042)
@@ -217,7 +217,6 @@
                } catch (IOException e) {
                        Logger.error(this, "Could not bind to TMCI port: 
"+tempBindTo+":"+port);
                        System.err.println("Could not bind to TMCI port: 
"+tempBindTo+":"+port);
-                       System.exit(-1);
                        return;
                }
                try {

Modified: trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java     2006-08-11 
18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java     2006-08-11 
21:33:20 UTC (rev 10042)
@@ -21,6 +21,6 @@
        public void run(FCPConnectionHandler handler, Node node) {
                FCPMessage msg = new 
ProtocolErrorMessage(ProtocolErrorMessage.SHUTTING_DOWN,true,"The node is 
shutting down","Node");
                handler.outputHandler.queue(msg);
-               node.exit();
+               node.exit("Received FCP shutdown message");
        }       
 }
\ No newline at end of file

Modified: trunk/freenet/src/freenet/node/updater/NodeUpdater.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2006-08-11 
18:16:19 UTC (rev 10041)
+++ trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2006-08-11 
21:33:20 UTC (rev 10042)
@@ -378,7 +378,7 @@
                                                String err = "CATASTROPHIC 
ERROR: Deleted "+oldConfig+" but cannot rename "+newConfig+" to "+oldConfig+" 
THEREFORE THE NODE WILL NOT START! Please resolve the problem by renaming 
"+newConfig+" to "+oldConfig;
                                                System.err.println(err);
                                                Logger.error(this, err);
-                                               node.exit();
+                                               node.exit("Updater error");
                                                return;
                                        }
                                }
@@ -396,7 +396,7 @@
                        node.getNodeStarter().restart();
                } else{
                        System.out.println("New version has been downloaded: 
please restart your node!");
-                       node.exit();
+                       node.exit("New version ready but cannot auto-restart");
                }
                System.err.println("WTF? Restart returned!?");
        }


Reply via email to