Author: zothar
Date: 2007-03-15 19:28:36 +0000 (Thu, 15 Mar 2007)
New Revision: 12130
Modified:
trunk/freenet/src/freenet/client/async/SingleFileInserter.java
trunk/freenet/src/freenet/node/CHKInsertSender.java
trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/RequestStarter.java
trunk/freenet/src/freenet/node/SSKInsertHandler.java
trunk/freenet/src/freenet/node/SSKInsertSender.java
trunk/freenet/src/freenet/node/TextModeClientInterface.java
trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
trunk/freenet/src/freenet/node/fcp/FCPServer.java
trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
Log:
Use OOMHandler in more places. Add exception logging around
pluginmanager/PluginHandler plugins. Catch OOMs and Throwables in
OffThreadCompressor.
Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2007-03-15 19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java
2007-03-15 19:28:36 UTC (rev 12130)
@@ -16,6 +16,7 @@
import freenet.keys.FreenetURI;
import freenet.keys.SSKBlock;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.SimpleFieldSet;
import freenet.support.api.Bucket;
import freenet.support.compress.CompressionOutputSizeException;
@@ -120,6 +121,13 @@
tryCompress();
} catch (InserterException e) {
cb.onFailure(e, SingleFileInserter.this);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
+ System.err.println("OffThreadCompressor thread
above failed.");
+ } catch (Throwable t) {
+ Logger.error(this, "Caught in OffThreadCompressor: "+t, t);
+ System.err.println("Caught in OffThreadCompressor: "+t);
+ t.printStackTrace();
}
}
}
Modified: trunk/freenet/src/freenet/node/CHKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-03-15 19:25:40 UTC
(rev 12129)
+++ trunk/freenet/src/freenet/node/CHKInsertSender.java 2007-03-15 19:28:36 UTC
(rev 12130)
@@ -18,6 +18,7 @@
import freenet.keys.CHKVerifyException;
import freenet.keys.NodeCHK;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
public final class CHKInsertSender implements Runnable, AnyInsertSender,
ByteCounter {
@@ -210,6 +211,8 @@
node.addInsertSender(myKey, origHTL, this);
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
int myStatus;
Modified: trunk/freenet/src/freenet/node/IPDetectorPluginManager.java
===================================================================
--- trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2007-03-15
19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/node/IPDetectorPluginManager.java 2007-03-15
19:28:36 UTC (rev 12130)
@@ -13,6 +13,7 @@
import freenet.pluginmanager.FredPluginIPDetector;
import freenet.support.HTMLNode;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.transport.ip.IPUtil;
/**
@@ -435,6 +436,8 @@
public void run() {
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2007-03-15 19:25:40 UTC
(rev 12129)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2007-03-15 19:28:36 UTC
(rev 12130)
@@ -17,6 +17,7 @@
import freenet.keys.NodeCHK;
import freenet.support.HexUtil;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.ShortBuffer;
/**
@@ -70,6 +71,8 @@
public void run() {
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
} finally {
Modified: trunk/freenet/src/freenet/node/RequestStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestStarter.java 2007-03-15 19:25:40 UTC
(rev 12129)
+++ trunk/freenet/src/freenet/node/RequestStarter.java 2007-03-15 19:28:36 UTC
(rev 12130)
@@ -147,6 +147,8 @@
while(true) {
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
Modified: trunk/freenet/src/freenet/node/SSKInsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-03-15
19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/node/SSKInsertHandler.java 2007-03-15
19:28:36 UTC (rev 12130)
@@ -15,6 +15,7 @@
import freenet.keys.SSKVerifyException;
import freenet.store.KeyCollisionException;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.ShortBuffer;
/**
@@ -73,6 +74,8 @@
public void run() {
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
} finally {
Modified: trunk/freenet/src/freenet/node/SSKInsertSender.java
===================================================================
--- trunk/freenet/src/freenet/node/SSKInsertSender.java 2007-03-15 19:25:40 UTC
(rev 12129)
+++ trunk/freenet/src/freenet/node/SSKInsertSender.java 2007-03-15 19:28:36 UTC
(rev 12130)
@@ -17,6 +17,7 @@
import freenet.keys.SSKBlock;
import freenet.keys.SSKVerifyException;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.ShortBuffer;
/**
@@ -105,6 +106,8 @@
node.addInsertSender(myKey, htl, this);
try {
realRun();
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
if(status == NOT_FINISHED)
Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2007-03-15
19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2007-03-15
19:28:36 UTC (rev 12130)
@@ -36,6 +36,7 @@
import freenet.keys.InsertableClientSSK;
import freenet.support.HexUtil;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.SimpleFieldSet;
import freenet.support.SizeUtil;
import freenet.support.api.Bucket;
@@ -91,6 +92,8 @@
realRun();
} catch (IOException e) {
if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this,
"Caught "+e, e);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
2007-03-15 19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
2007-03-15 19:28:36 UTC (rev 12130)
@@ -7,6 +7,7 @@
import java.io.InputStream;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.SimpleFieldSet;
import freenet.support.io.LineReadingInputStream;
@@ -30,6 +31,8 @@
} catch (IOException e) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Caught "+e, e);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
t.printStackTrace();
Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
2007-03-15 19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionOutputHandler.java
2007-03-15 19:28:36 UTC (rev 12130)
@@ -8,6 +8,7 @@
import java.util.LinkedList;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
public class FCPConnectionOutputHandler implements Runnable {
@@ -31,6 +32,8 @@
} catch (IOException e) {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "Caught "+e, e);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java 2007-03-15 19:25:40 UTC
(rev 12129)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java 2007-03-15 19:28:36 UTC
(rev 12130)
@@ -38,6 +38,7 @@
import freenet.node.RequestStarter;
import freenet.support.Base64;
import freenet.support.Logger;
+import freenet.support.OOMHandler;
import freenet.support.api.BooleanCallback;
import freenet.support.api.Bucket;
import freenet.support.api.IntCallback;
@@ -148,6 +149,8 @@
realRun();
} catch (IOException e) {
if(logMINOR) Logger.minor(this, "Caught "+e, e);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
Modified: trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2007-03-15
19:25:40 UTC (rev 12129)
+++ trunk/freenet/src/freenet/pluginmanager/PluginHandler.java 2007-03-15
19:28:36 UTC (rev 12130)
@@ -1,5 +1,8 @@
package freenet.pluginmanager;
+import freenet.support.Logger;
+import freenet.support.OOMHandler;
+
/**
* Methods to handle a specific plugin (= set it up and start it)
*
@@ -58,8 +61,16 @@
return;
}
- if (plugin instanceof FredPlugin) {
- ((FredPlugin)plugin).runPlugin(pr);
+ if (plugin instanceof FredPlugin) {
+ try {
+ ((FredPlugin)plugin).runPlugin(pr);
+ } catch (OutOfMemoryError e) {
+ OOMHandler.handleOOM(e);
+ } catch (Throwable t) {
+ Logger.normal(this, "Caught Throwable
while running plugin: "+t, t);
+ System.err.println("Caught Throwable
while running plugin: "+t);
+ t.printStackTrace();
+ }
}
// If not FredPlugin, then the whole thing is aborted,
// and then this method will return, killing the thread