Author: j16sdiz
Date: 2009-04-08 05:03:11 +0000 (Wed, 08 Apr 2009)
New Revision: 26634
Modified:
trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/NodeCrypto.java
trunk/freenet/src/freenet/node/OpennetManager.java
Log:
Remove UDPSocket Halt Checker
This is a prerequisite for the "Reduce SocketTimeOutException"
patch, which reduce the number of Exception thrown.
The EvailJVM bug is long solved. This code path is running as max
priority every 10 seconds, causing sigifiance power consumsion.
Modified: trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java 2009-04-08
05:02:45 UTC (rev 26633)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketHandler.java 2009-04-08
05:03:11 UTC (rev 26634)
@@ -9,15 +9,10 @@
import java.net.SocketTimeoutException;
import java.util.Random;
-import org.tanukisoftware.wrapper.WrapperManager;
-
import freenet.io.AddressTracker;
import freenet.io.comm.Peer.LocalAddressException;
-import freenet.node.LoggingConfigHandler;
import freenet.node.Node;
-import freenet.node.NodeInitException;
import freenet.node.PrioRunnable;
-import freenet.support.FileLoggerHook;
import freenet.support.Logger;
import freenet.support.OOMHandler;
import freenet.support.io.NativeThread;
@@ -38,7 +33,6 @@
private final Node node;
private static boolean logMINOR;
private static boolean logDEBUG;
- private volatile int lastTimeInSeconds;
private boolean _isDone;
private boolean _active = true;
private final int listenPort;
@@ -145,7 +139,6 @@
if(!_active) return; // Finished
}
try {
- lastTimeInSeconds = (int)
(System.currentTimeMillis() / 1000);
realRun(packet);
} catch (OutOfMemoryError e) {
OOMHandler.handleOOM(e);
@@ -295,101 +288,16 @@
public int getPacketSendThreshold() {
return getMaxPacketSize() - 100;
}
-
- public void start() {
- start(false);
- }
- public void start(boolean disableHangChecker) {
- lastTimeInSeconds = (int) (System.currentTimeMillis() / 1000);
+ public void start() {
synchronized(this) {
if(!_active) return;
_started = true;
startTime = System.currentTimeMillis();
}
node.executor.execute(this, "UdpSocketHandler for port
"+listenPort);
- if(!disableHangChecker) {
- node.executor.execute(new USMChecker(),
"UdpSocketHandler watchdog");
- }
}
-
- public class USMChecker implements PrioRunnable {
- public void run() {
- freenet.support.Logger.OSThread.logPID(this);
- while(true) {
- if(_isDone) {
- boolean active;
- // Gone now, little reason to
synchronize; particularly for reading a primitive.
- // The EvilJVM bug may deadlock on
proper synchronization here anyway.
- active = _active;
- if(active) {
-
System.err.println("UdpSocketHandler for port "+listenPort+" has died without
being told to! Restarting node...");
- if(node.isUsingWrapper()){
-
WrapperManager.requestThreadDump();
-
WrapperManager.restart();
- }else{
- // No wrapper : we
don't want to let it harm the network!
- node.exit("USM
deadlock");
- }
- }
- return; // don't synchronize because
don't want to deadlock - this is our recovery mechanism
- }
- logMINOR = Logger.shouldLog(Logger.MINOR,
UdpSocketHandler.this);
- try {
- Thread.sleep(10*1000);
- } catch (InterruptedException e) {
- // Ignore
- }
- if(_thread == null || _thread.isAlive()) {
- if(logMINOR) Logger.minor(this, "PING
on "+UdpSocketHandler.this);
- long time = System.currentTimeMillis();
- int timeSecs = (int) (time / 1000);
- if(timeSecs - lastTimeInSeconds > 3*60)
{
-
- // USM has hung.
- // Probably caused by the
EvilJVMBug (see PacketSender).
- // We'd better restart... :(
-
- LoggingConfigHandler lch =
Node.logConfigHandler;
- FileLoggerHook flh = lch ==
null ? null : lch.getFileLoggerHook();
- boolean hasRedirected = flh ==
null ? false : flh.hasRedirectedStdOutErrNoLock();
-
- if(!hasRedirected)
-
System.err.println("Restarting node: MessageCore froze for 3 minutes!");
-
- try {
-
if(node.isUsingWrapper()){
-
WrapperManager.requestThreadDump();
-
WrapperManager.restart();
- }else{
-
if(!hasRedirected)
-
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("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 [email protected]");
-
t.printStackTrace();
- }
- node.exit("USM deadlock
and error");
- }
- }
- } else {
- if(_isDone) return;
- Logger.error(this, "MAIN LOOP
TERMINATED");
- System.err.println("MAIN LOOP
TERMINATED!");
-
node.exit(NodeInitException.EXIT_MAIN_LOOP_LOST);
- }
- }
- }
- public int getPriority() {
- return NativeThread.MAX_PRIORITY;
- }
- }
-
public void close() {
Logger.normal(this, "Closing.", new Exception("error"));
synchronized (this) {
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2009-04-08 05:02:45 UTC (rev
26633)
+++ trunk/freenet/src/freenet/node/Node.java 2009-04-08 05:03:11 UTC (rev
26634)
@@ -2280,7 +2280,7 @@
uptime.start();
failureTable.start();
- darknetCrypto.start(disableHangCheckers);
+ darknetCrypto.start();
if(opennet != null)
opennet.start();
ps.start(nodeStats);
Modified: trunk/freenet/src/freenet/node/NodeCrypto.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeCrypto.java 2009-04-08 05:02:45 UTC
(rev 26633)
+++ trunk/freenet/src/freenet/node/NodeCrypto.java 2009-04-08 05:03:11 UTC
(rev 26634)
@@ -272,9 +272,9 @@
node.random.nextBytes(clientNonce);
}
- public void start(boolean disableHangchecker) {
+ public void start() {
packetMangler.start();
- socket.start(disableHangchecker);
+ socket.start();
}
public SimpleFieldSet exportPrivateFieldSet() {
Modified: trunk/freenet/src/freenet/node/OpennetManager.java
===================================================================
--- trunk/freenet/src/freenet/node/OpennetManager.java 2009-04-08 05:02:45 UTC
(rev 26633)
+++ trunk/freenet/src/freenet/node/OpennetManager.java 2009-04-08 05:03:11 UTC
(rev 26634)
@@ -222,7 +222,7 @@
}
public void start() {
- crypto.start(node.disableHangCheckers);
+ crypto.start();
if(announcer!= null)
announcer.start();
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs