[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