From: <tc...@us...> - 2009-09-23 23:41:30
|
Revision: 9948 http://wonder.svn.sourceforge.net/wonder/?rev=9948&view=rev Author: tcripps Date: 2009-09-23 23:41:20 +0000 (Wed, 23 Sep 2009) Log Message: ----------- Making the application termination on OOM exception optional. Modified Paths: -------------- trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXApplication.java Modified: trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXApplication.java =================================================================== --- trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXApplication.java 2009-09-23 19:00:41 UTC (rev 9947) +++ trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/appserver/ERXApplication.java 2009-09-23 23:41:20 UTC (rev 9948) @@ -161,6 +161,11 @@ private static int lowMemBufferSize = 0; /** + * Property to control whether to exit on an OutOfMemoryError. + */ + public static final String AppShouldExitOnOutOfMemoryError = "er.extensions.AppShouldExitOnOutOfMemoryError"; + + /** * Notification to post when all bundles were loaded but before their * principal was called */ @@ -1695,7 +1700,8 @@ if (throwable instanceof Error) { boolean shouldQuit = false; if (throwable instanceof OutOfMemoryError) { - shouldQuit = true; + boolean shouldExitOnOOMError = ERXProperties.booleanForKeyWithDefault(AppShouldExitOnOutOfMemoryError, true); + shouldQuit = shouldExitOnOOMError; // AK: I'm not sure this actually works, in particular when the // buffer is in the long-running generational mem, but it's // worth a try. @@ -1715,14 +1721,14 @@ lowMemBuffer = new byte[lowMemBufferSize]; } catch (Throwable ex) { - shouldQuit = true; + shouldQuit = shouldExitOnOOMError; } } // We first log just in case the log4j call puts us in a bad // state. if (shouldQuit) { NSLog.err.appendln("Ran out of memory, killing this instance"); - log.error("Ran out of memory, killing this instance"); + log.fatal("Ran out of memory, killing this instance"); } } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |