[hornetq-commits] JBoss hornetq SVN: r7970 - in trunk: src/main/org/hornetq/core/config and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Sep 18 10:02:23 EDT 2009
Author: jmesnil
Date: 2009-09-18 10:02:22 -0400 (Fri, 18 Sep 2009)
New Revision: 7970
Modified:
trunk/src/config/common/schema/hornetq-configuration.xsd
trunk/src/main/org/hornetq/core/config/Configuration.java
trunk/src/main/org/hornetq/core/config/impl/ConfigurationImpl.java
trunk/src/main/org/hornetq/core/config/impl/FileConfiguration.java
trunk/src/main/org/hornetq/core/server/impl/HornetQServerImpl.java
trunk/src/main/org/hornetq/core/server/impl/MemoryManagerImpl.java
trunk/tests/config/ConfigurationTest-full-config.xml
trunk/tests/src/org/hornetq/tests/unit/core/config/impl/ConfigurationImplTest.java
trunk/tests/src/org/hornetq/tests/unit/core/config/impl/FileConfigurationTest.java
Log:
HORNETQ-138: Memory Manager parameters should be configurable
* Parameters are retrieved using the Configuration interface
* added memory-warning-threshold & memory-measure-interval to XML config
Modified: trunk/src/config/common/schema/hornetq-configuration.xsd
===================================================================
--- trunk/src/config/common/schema/hornetq-configuration.xsd 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/config/common/schema/hornetq-configuration.xsd 2009-09-18 14:02:22 UTC (rev 7970)
@@ -166,6 +166,10 @@
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="server-dump-interval" type="xsd:long">
</xsd:element>
+ <xsd:element maxOccurs="1" minOccurs="0" name="memory-warning-threshold" type="xsd:int">
+ </xsd:element>
+ <xsd:element maxOccurs="1" minOccurs="0" name="memory-measure-interval" type="xsd:long">
+ </xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="large-messages-directory" type="xsd:string">
</xsd:element>
<xsd:element maxOccurs="1" minOccurs="0" name="security-settings">
Modified: trunk/src/main/org/hornetq/core/config/Configuration.java
===================================================================
--- trunk/src/main/org/hornetq/core/config/Configuration.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/main/org/hornetq/core/config/Configuration.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -243,6 +243,14 @@
void setServerDumpInterval(long interval);
+ int getMemoryWarningThreshold();
+
+ void setMemoryWarningThreshold(int memoryWarningThreshold);
+
+ long getMemoryMeasureInterval();
+
+ void setMemoryMeasureInterval(long memoryMeasureInterval);
+
// Paging Properties --------------------------------------------------------------------
String getPagingDirectory();
@@ -288,4 +296,5 @@
void setMessageExpiryThreadPriority(int messageExpiryThreadPriority);
+
}
Modified: trunk/src/main/org/hornetq/core/config/impl/ConfigurationImpl.java
===================================================================
--- trunk/src/main/org/hornetq/core/config/impl/ConfigurationImpl.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/main/org/hornetq/core/config/impl/ConfigurationImpl.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -158,6 +158,10 @@
public static final long DEFAULT_SERVER_DUMP_INTERVAL = -1;
+ public static final int DEFAULT_MEMORY_WARNING_THRESHOLD = 25;
+
+ public static final long DEFAULT_MEMORY_MEASURE_INTERVAL = 3000; // in milliseconds
+
// Attributes -----------------------------------------------------------------------------
protected boolean clustered = DEFAULT_CLUSTERED;
@@ -282,6 +286,11 @@
protected long serverDumpInterval = DEFAULT_SERVER_DUMP_INTERVAL;
+ // percentage of free memory which triggers warning from the memory manager
+ protected int memoryWarningThreshold = DEFAULT_MEMORY_WARNING_THRESHOLD;
+
+ protected long memoryMeasureInterval = DEFAULT_MEMORY_MEASURE_INTERVAL;
+
// Public -------------------------------------------------------------------------
public void start() throws Exception
@@ -1051,5 +1060,24 @@
{
this.serverDumpInterval = intervalInMilliseconds;
}
+
+ public int getMemoryWarningThreshold()
+ {
+ return memoryWarningThreshold ;
+ }
+
+ public void setMemoryWarningThreshold(int memoryWarningThreshold)
+ {
+ this.memoryWarningThreshold = memoryWarningThreshold;
+ }
+ public long getMemoryMeasureInterval()
+ {
+ return memoryMeasureInterval ;
+ }
+
+ public void setMemoryMeasureInterval(long memoryMeasureInterval)
+ {
+ this.memoryMeasureInterval = memoryMeasureInterval;
+ }
}
Modified: trunk/src/main/org/hornetq/core/config/impl/FileConfiguration.java
===================================================================
--- trunk/src/main/org/hornetq/core/config/impl/FileConfiguration.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/main/org/hornetq/core/config/impl/FileConfiguration.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -326,6 +326,10 @@
serverDumpInterval = getLong(e, "server-dump-interval", serverDumpInterval, MINUS_ONE_OR_GT_ZERO); // in milliseconds
+ memoryWarningThreshold = getInteger(e, "memory-warning-threshold", memoryWarningThreshold, PERCENTAGE);
+
+ memoryMeasureInterval = getLong(e, "memory-measure-interval", memoryMeasureInterval, GT_ZERO); // in milliseconds
+
started = true;
}
Modified: trunk/src/main/org/hornetq/core/server/impl/HornetQServerImpl.java
===================================================================
--- trunk/src/main/org/hornetq/core/server/impl/HornetQServerImpl.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/main/org/hornetq/core/server/impl/HornetQServerImpl.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -907,7 +907,7 @@
scheduledPool,
managementConnectorID);
- memoryManager = new MemoryManagerImpl();
+ memoryManager = new MemoryManagerImpl(configuration.getMemoryWarningThreshold(), configuration.getMemoryMeasureInterval());
memoryManager.start();
}
Modified: trunk/src/main/org/hornetq/core/server/impl/MemoryManagerImpl.java
===================================================================
--- trunk/src/main/org/hornetq/core/server/impl/MemoryManagerImpl.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/src/main/org/hornetq/core/server/impl/MemoryManagerImpl.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -29,17 +29,11 @@
{
private static final Logger log = Logger.getLogger(MemoryManagerImpl.class);
- private static final long DEFAULT_MEASURE_INTERVAL = 3000;
-
- private static final int DEFAULT_FREE_MEMORY_PERCENT = 25;
-
private Runtime runtime;
- //TODO Should be configurable
private long measureInterval;
- //TODO Should be configurable
- private int freeMemoryPercent;
+ private int memoryWarningThreshold;
private volatile boolean started;
@@ -47,13 +41,13 @@
private volatile boolean low;
- public MemoryManagerImpl()
+ public MemoryManagerImpl(int memoryWarningThreshold, long measureInterval)
{
runtime = Runtime.getRuntime();
- this.measureInterval = DEFAULT_MEASURE_INTERVAL;
+ this.measureInterval = measureInterval;
- this.freeMemoryPercent = DEFAULT_FREE_MEMORY_PERCENT;
+ this.memoryWarningThreshold = memoryWarningThreshold;
}
public boolean isMemoryLow()
@@ -69,7 +63,7 @@
public synchronized void start()
{
log.debug("Starting MemoryManager with MEASURE_INTERVAL: " + measureInterval
- + " FREE_MEMORY_PERCENT: " + freeMemoryPercent);
+ + " FREE_MEMORY_PERCENT: " + memoryWarningThreshold);
if (started)
{
@@ -151,9 +145,9 @@
log.debug(info);
}
- if (availableMemoryPercent <= freeMemoryPercent)
+ if (availableMemoryPercent <= memoryWarningThreshold)
{
- log.warn("Less than " + freeMemoryPercent + "%\n"
+ log.warn("Less than " + memoryWarningThreshold + "%\n"
+ info +
"\nYou are in danger of running out of RAM. Have you set paging parameters " +
"on your addresses? (See user manual \"Paging\" chapter)");
Modified: trunk/tests/config/ConfigurationTest-full-config.xml
===================================================================
--- trunk/tests/config/ConfigurationTest-full-config.xml 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/tests/config/ConfigurationTest-full-config.xml 2009-09-18 14:02:22 UTC (rev 7970)
@@ -46,6 +46,8 @@
<journal-min-files>100</journal-min-files>
<journal-max-aio>56546</journal-max-aio>
<large-messages-directory>largemessagesdir</large-messages-directory>
+ <memory-warning-threshold>95</memory-warning-threshold>
+ <memory-measure-interval>54321</memory-measure-interval>
<remoting-interceptors>
<class-name>org.hornetq.tests.unit.core.config.impl.TestInterceptor1</class-name>
Modified: trunk/tests/src/org/hornetq/tests/unit/core/config/impl/ConfigurationImplTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/unit/core/config/impl/ConfigurationImplTest.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/tests/src/org/hornetq/tests/unit/core/config/impl/ConfigurationImplTest.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -91,7 +91,9 @@
assertEquals(ConfigurationImpl.DEFAULT_MANAGEMENT_REQUEST_TIMEOUT, conf.getManagementRequestTimeout());
assertEquals(ConfigurationImpl.DEFAULT_ID_CACHE_SIZE, conf.getIDCacheSize());
assertEquals(ConfigurationImpl.DEFAULT_PERSIST_ID_CACHE, conf.isPersistIDCache());
-
+ assertEquals(ConfigurationImpl.DEFAULT_SERVER_DUMP_INTERVAL, conf.getServerDumpInterval());
+ assertEquals(ConfigurationImpl.DEFAULT_MEMORY_WARNING_THRESHOLD, conf.getMemoryWarningThreshold());
+ assertEquals(ConfigurationImpl.DEFAULT_MEMORY_MEASURE_INTERVAL, conf.getMemoryMeasureInterval());
}
public void testSetGetAttributes()
Modified: trunk/tests/src/org/hornetq/tests/unit/core/config/impl/FileConfigurationTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/unit/core/config/impl/FileConfigurationTest.java 2009-09-18 12:17:47 UTC (rev 7969)
+++ trunk/tests/src/org/hornetq/tests/unit/core/config/impl/FileConfigurationTest.java 2009-09-18 14:02:22 UTC (rev 7970)
@@ -79,6 +79,7 @@
assertEquals(33, conf.getJournalCompactPercentage());
assertEquals(56546, conf.getJournalMaxAIO());
assertEquals("largemessagesdir", conf.getLargeMessagesDirectory());
+ assertEquals(95, conf.getMemoryWarningThreshold());
assertEquals(2, conf.getInterceptorClassNames().size());
assertTrue(conf.getInterceptorClassNames().contains("org.hornetq.tests.unit.core.config.impl.TestInterceptor1"));
More information about the hornetq-commits
mailing list