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


Reply via email to