[jboss-cvs] JBoss Messaging SVN: r8472 - in branches/JBPAPP-7443: docs/userguide/en/modules and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 1 11:57:23 EDT 2011


Author: raggz
Date: 2011-11-01 11:57:22 -0400 (Tue, 01 Nov 2011)
New Revision: 8472

Modified:
   branches/JBPAPP-7443/
   branches/JBPAPP-7443/docs/userguide/en/modules/configuration.xml
   branches/JBPAPP-7443/integration/AS5/etc/xmdesc/ConnectionFactory-xmbean.xml
   branches/JBPAPP-7443/integration/EAP4/etc/xmdesc/ConnectionFactory-xmbean.xml
   branches/JBPAPP-7443/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ClientConsumer.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ConsumerAspect.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/StateCreationAspect.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConnectionState.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConsumerState.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/SessionState.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/server/ConnectionFactoryManager.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
   branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java
   branches/JBPAPP-7443/tests/src/org/jboss/test/messaging/jms/ConnectionFactoryTest.java
Log:
Backport of JBMessaging-1851


Property changes on: branches/JBPAPP-7443
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/Branch_1_4:8151,8237,8254-8255,8257
   + /branches/Branch_1_4:8151,8237-8238,8254-8255,8257

Modified: branches/JBPAPP-7443/docs/userguide/en/modules/configuration.xml
===================================================================
--- branches/JBPAPP-7443/docs/userguide/en/modules/configuration.xml	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/docs/userguide/en/modules/configuration.xml	2011-11-01 15:57:22 UTC (rev 8472)
@@ -2395,6 +2395,29 @@
         <para>This attribute takes effect only if the EnableOrderingGroup attribute is true.</para>
       </section>
 
+      <section id="conf.connectionfactory.attributes.maxretrychangerate">
+        <title>MaxRetryChangeRate</title>
+
+        <para>Maximum attempts to retry sending change rate message for a consumer. Default is zero (no retry).</para>
+
+        <para>This attribute is useful when there is some random network disturbance between a client and the JBM server. A JMS client
+        can inform the JMS server to deliver more messages to it when there is no more messages in the client buffer, by sending a changeRate message
+        to the server. If the changeRate message failed to reach the server due to a temporary network disturbance, the server won't start delivering messages
+        to the client and the client receives no more messages even the messages at the server keep building up. With this parameter, the client can retry sending
+        of the changeRate messages in case of failure so this issue can be greatly alleviated .</para>
+        
+        <para>The valid values for this attribute are zero (default, no retry), -1 (retry forever), and any positive long type number. It is used together with 
+        attribute RetryChangeRateInterval.</para>
+      </section>
+
+      <section id="conf.connectionfactory.attributes.retrychangerateinterval">
+        <title>RetryChangeRateInterval</title>
+
+        <para>Interval (milliseconds) between two attempts of retrying to send change rate message. Default is 5000.</para>
+
+        <para>This attribute takes effect only if the MaxRetryChangeRate attribute is not zero.</para>
+      </section>
+
     <!-- End conf.connectionfactory.attributes -->
   </section>
 

Modified: branches/JBPAPP-7443/integration/AS5/etc/xmdesc/ConnectionFactory-xmbean.xml
===================================================================
--- branches/JBPAPP-7443/integration/AS5/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/integration/AS5/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:57:22 UTC (rev 8472)
@@ -147,6 +147,18 @@
       <name>DefaultOrderingGroupName</name>
       <type>java.lang.String</type>
    </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxRetryChangeRate" setMethod="setMaxRetryChangeRate">
+      <description>Maximum attempts to retry sending change rate message for a consumer. Default is zero (no retry).</description>
+      <name>MaxRetryChangeRate</name>
+      <type>long</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getRetryChangeRateInterval" setMethod="setRetryChangeRateInterval">
+      <description>Interval (milliseconds) between two attempts of retrying to send change rate message. Default is 5000.</description>
+      <name>RetryChangeRateInterval</name>
+      <type>long</type>
+   </attribute>
 
    <!-- Managed operations -->
 
@@ -170,4 +182,4 @@
       <name>destroy</name>
    </operation>
 
-</mbean>
\ No newline at end of file
+</mbean>

Modified: branches/JBPAPP-7443/integration/EAP4/etc/xmdesc/ConnectionFactory-xmbean.xml
===================================================================
--- branches/JBPAPP-7443/integration/EAP4/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/integration/EAP4/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:57:22 UTC (rev 8472)
@@ -147,6 +147,18 @@
       <name>DefaultOrderingGroupName</name>
       <type>java.lang.String</type>
    </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxRetryChangeRate" setMethod="setMaxRetryChangeRate">
+      <description>Maximum attempts to retry sending change rate message for a consumer. Default is zero (no retry).</description>
+      <name>MaxRetryChangeRate</name>
+      <type>long</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getRetryChangeRateInterval" setMethod="setRetryChangeRateInterval">
+      <description>Interval (milliseconds) between two attempts of retrying to send change rate message. Default is 5000.</description>
+      <name>RetryChangeRateInterval</name>
+      <type>long</type>
+   </attribute>
 
    <!-- Managed operations -->
 

Modified: branches/JBPAPP-7443/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml
===================================================================
--- branches/JBPAPP-7443/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml	2011-11-01 15:57:22 UTC (rev 8472)
@@ -147,6 +147,18 @@
       <name>DefaultOrderingGroupName</name>
       <type>java.lang.String</type>
    </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxRetryChangeRate" setMethod="setMaxRetryChangeRate">
+      <description>Maximum attempts to retry sending change rate message for a consumer. Default is zero (no retry).</description>
+      <name>MaxRetryChangeRate</name>
+      <type>long</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getRetryChangeRateInterval" setMethod="setRetryChangeRateInterval">
+      <description>Interval (milliseconds) between two attempts of retrying to send change rate message. Default is 5000.</description>
+      <name>RetryChangeRateInterval</name>
+      <type>long</type>
+   </attribute>
 
    <!-- Managed operations -->
 
@@ -170,4 +182,4 @@
       <name>destroy</name>
    </operation>
 
-</mbean>
\ No newline at end of file
+</mbean>

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ClientConsumer.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ClientConsumer.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ClientConsumer.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -297,6 +297,8 @@
    private volatile Thread onMessageThread;
    private ExecutorService pool = Executors.newCachedThreadPool();
    private boolean abortReceive;
+   private long maxRetryChangeRate;
+   private long retryChangeRateInterval;
 
    public int getBufferSize()
    {
@@ -310,7 +312,9 @@
                          String queueName,
                          int bufferSize, Executor sessionExecutor,
                          int maxDeliveries, boolean shouldAck,
-                         long redeliveryDelay)
+                         long redeliveryDelay,
+                         long maxRetryChangeRate,
+                         long retryChangeRateInterval)
    {
       if (bufferSize < 1)
       {
@@ -330,6 +334,8 @@
       this.maxDeliveries = maxDeliveries;
       this.shouldAck = shouldAck;
       this.redeliveryDelay = redeliveryDelay;
+      this.maxRetryChangeRate = maxRetryChangeRate;
+      this.retryChangeRateInterval = retryChangeRateInterval;
    }
         
    // Public ---------------------------------------------------------------------------------------
@@ -810,7 +816,7 @@
       }
    }
    
-   private void sendChangeRateMessage(float newRate) 
+   public void sendChangeRateMessage(float newRate) 
    {
       try
       {
@@ -820,10 +826,52 @@
       }
       catch (JMSException e)
       {
-         log.error("Failed to send changeRate message", e);
+         if (maxRetryChangeRate == 0)
+         {
+            log.error("Failed to send changeRate message", e);
+         }
+         else
+         {
+            log.warn("Failed to send changeRate message, will retry with maxRetryChangeRate " + maxRetryChangeRate 
+                     + ", retryChangeRateInterval " + retryChangeRateInterval + ", newRate " + newRate);
+            retrySendChangeRateMessage(newRate);
+         }
       }
    }
    
+   private void retrySendChangeRateMessage(float newRate)
+   {
+      int numRetry = 0;
+      while (true)
+      {
+         try
+         {
+            numRetry++;
+            if (trace) { log.trace("Retrying sending changeRate, numRetry " + numRetry); }
+            
+            consumerDelegate.changeRate(newRate);
+            log.info("Successfully sent changeRate. Retry number: " + numRetry);
+            break;
+         }
+         catch (JMSException ee)
+         {
+            if ((maxRetryChangeRate > 0) && (numRetry >= maxRetryChangeRate))
+            {
+               log.warn("Failed to send changeRate message after retry number " + numRetry, ee);
+               break;
+            }
+            try
+            {
+               Thread.sleep(retryChangeRateInterval);
+            }
+            catch (InterruptedException ex)
+            {
+               //ignore
+            }
+         }
+      }
+   }
+   
    private void waitForOnMessageToComplete()
    {
       // Wait for any onMessage() executions to complete

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ConsumerAspect.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ConsumerAspect.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/ConsumerAspect.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -113,7 +113,8 @@
          new ClientConsumer(isCC, sessionState.getAcknowledgeMode(),
                             sessionDelegate, consumerDelegate, consumerID, queueName,
                             prefetchSize, executor, maxDeliveries, consumerState.isShouldAck(),
-                            redeliveryDelay);
+                            redeliveryDelay, consumerState.getMaxRetryChangeRate(), 
+                            consumerState.getRetryChangeRateInterval());
       
       sessionState.addCallbackHandler(messageHandler);
       
@@ -126,7 +127,8 @@
       {
 	      //Now we have finished creating the client consumer, we can tell the SCD
 	      //we are ready
-	      consumerDelegate.changeRate(1);
+	      //consumerDelegate.changeRate(1);
+	      messageHandler.sendChangeRateMessage(1);
       }
 
       return consumerDelegate;

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/StateCreationAspect.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/StateCreationAspect.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/container/StateCreationAspect.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -99,7 +99,8 @@
          ConnectionState connectionState =
             new ConnectionState(serverID, connectionDelegate,
                                 remotingConnection, versionToUse, 
-                                connectionDelegate.isEnableOrderingGroup(), connectionDelegate.getDefaultOrderingGroupName());
+                                connectionDelegate.isEnableOrderingGroup(), connectionDelegate.getDefaultOrderingGroupName(),
+                                connectionDelegate.getMaxRetryChangeRate(), connectionDelegate.getRetryChangeRateInterval());
 
          remotingConnection.getConnectionListener().setConnectionState(connectionState);
          remotingConnection.getConnectionListener().start();

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionDelegate.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -85,6 +85,10 @@
    private boolean enableOrderingGroup;
    
    private String defaultOrderingGroupName;
+   
+   private long maxRetryChangeRate;
+   
+   private long retryChangeRateInterval;
 
    // Static ---------------------------------------------------------------------------------------
 
@@ -363,8 +367,29 @@
       return defaultOrderingGroupName;
    }
 
+   public long getRetryChangeRateInterval()
+   {
+      return retryChangeRateInterval;
+   }
+
+   public long getMaxRetryChangeRate()
+   {
+      return maxRetryChangeRate;
+   }
+
+   public void setMaxRetryChangeRate(long maxRetryChangeRate)
+   {
+      this.maxRetryChangeRate = maxRetryChangeRate;
+   }
+
+   public void setRetryChangeRateInterval(long retryChangeRateInterval)
+   {
+      this.retryChangeRateInterval = retryChangeRateInterval;
+   }
+   
    // Package Private ------------------------------------------------------------------------------
 
+
    // Private --------------------------------------------------------------------------------------
 
    // Inner Classes --------------------------------------------------------------------------------

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -84,6 +84,10 @@
    
    private String defaultOrderingGroupName;
    
+   private long maxRetryChangeRate;
+   
+   private long retryChangeRateInterval;
+   
    // Static ---------------------------------------------------------------------------------------
    
    /*
@@ -114,7 +118,8 @@
 
    public ClientConnectionFactoryDelegate(String uniqueName, String objectID, int serverID, String serverLocatorURI,
                                           Version serverVersion, boolean clientPing, boolean strictTck,
-                                          boolean sendAcksAsync, boolean enableOrderingGroup, String defaultOrderingGroupName)
+                                          boolean sendAcksAsync, boolean enableOrderingGroup, String defaultOrderingGroupName,
+                                          long maxRetryChangeRate, long retryChangeRateInterval)
    {
       super(objectID);
 
@@ -127,6 +132,8 @@
       this.sendAcksAsync = sendAcksAsync;
       this.setEnableOrderingGroup(enableOrderingGroup);
       this.setDefaultOrderingGroupName(defaultOrderingGroupName);
+      this.maxRetryChangeRate = maxRetryChangeRate;
+      this.retryChangeRateInterval = retryChangeRateInterval;
    }
    
    public ClientConnectionFactoryDelegate()
@@ -209,6 +216,10 @@
          connectionDelegate.setEnableOrderingGroup(this.enableOrderingGroup);
          
          connectionDelegate.setDefaultOrderingGroup(this.defaultOrderingGroupName);
+         
+         connectionDelegate.setMaxRetryChangeRate(this.maxRetryChangeRate);
+         
+         connectionDelegate.setRetryChangeRateInterval(this.retryChangeRateInterval);
       }
       else
       {

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConnectionState.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConnectionState.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConnectionState.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -92,12 +92,17 @@
    private boolean enableOrderingGroup;
    
    private String defaultOrderingGroupName;
+   
+   private long maxRetryChangeRate;
+   
+   private long retryChangeRateInterval;
 
    // Constructors ---------------------------------------------------------------------------------
 
    public ConnectionState(int serverID, ConnectionDelegate delegate,
                           JMSRemotingConnection remotingConnection,
-                          Version versionToUse, boolean enableOrderingGroup, String defaultOrderingGroupName)
+                          Version versionToUse, boolean enableOrderingGroup, String defaultOrderingGroupName,
+                          long maxRetryChangeRate, long retryChangeRateInterval)
       throws Exception
    {
       super(null, (DelegateSupport)delegate);
@@ -119,6 +124,10 @@
       this.setEnableOrderingGroup(enableOrderingGroup);
       
       this.setDefaultOrderingGroupName(defaultOrderingGroupName);
+      
+      this.maxRetryChangeRate = maxRetryChangeRate;
+      
+      this.retryChangeRateInterval = retryChangeRateInterval;
    }
 
    // HierarchicalState implementation -------------------------------------------------------------
@@ -307,18 +316,16 @@
       return defaultOrderingGroupName;
    }
 
-   //aborting when failover failed.
-   public void beforeAborting()
+   public long getMaxRetryChangeRate()
    {
-      Iterator sessStates = this.getChildren().iterator();
-      while (sessStates.hasNext())
-      {
-         SessionState sstate = (SessionState)sessStates.next();
-         sstate.beforeAborting();
-      }
-      
+      return maxRetryChangeRate;
    }
 
+   public long getRetryChangeRateInterval()
+   {
+      return retryChangeRateInterval;
+   }
+
    // Package protected ----------------------------------------------------------------------------
 
    // Protected ------------------------------------------------------------------------------------

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConsumerState.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConsumerState.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/ConsumerState.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -66,6 +66,9 @@
    private SessionState parent;
    private ConsumerDelegate delegate;
    
+   private long maxRetryChangeRate;
+   private long retryChangeRateInterval;
+   
    // Constructors ---------------------------------------------------------------------------------
 
    public ConsumerState(SessionState parent, ConsumerDelegate delegate, JBossDestination dest,
@@ -83,6 +86,8 @@
       this.subscriptionName=subscriptionName;
       this.maxDeliveries = maxDeliveries;
       this.redeliveryDelay = redeliveryDelay;
+      this.maxRetryChangeRate = parent.getMaxRetryChangeRate();
+      this.retryChangeRateInterval = parent.getRetryChangeRateInterval();
     
       //We don't store deliveries if this a non durable subscriber
       
@@ -221,11 +226,16 @@
    	return redeliveryDelay;
    }
 
-   public void beforeAborting()
+   public long getMaxRetryChangeRate()
    {
-      clientConsumer.abortReceive();
+      return maxRetryChangeRate;
    }
 
+   public long getRetryChangeRateInterval()
+   {
+      return this.retryChangeRateInterval;
+   }
+
    // Package protected ----------------------------------------------------------------------------
 
    // Protected ------------------------------------------------------------------------------------

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/SessionState.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/SessionState.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/client/state/SessionState.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -562,14 +562,15 @@
       }
    }
 
-   public void beforeAborting()
+   public long getMaxRetryChangeRate()
    {
-      Iterator consumers = this.getChildren().iterator();
-      while (consumers.hasNext())
-      {
-         ConsumerState conState = (ConsumerState)consumers.next();
-         conState.beforeAborting();
-      }
+      return parent.getMaxRetryChangeRate();
    }
+
+   public long getRetryChangeRateInterval()
+   {
+      return parent.getRetryChangeRateInterval();
+   }
+
 }
 

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/server/ConnectionFactoryManager.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/server/ConnectionFactoryManager.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/server/ConnectionFactoryManager.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -53,7 +53,9 @@
                                  boolean strictTck,
                                  boolean sendAcksAsync,
                                  boolean enableOrderingGroup,
-                                 String defaultOrderingGroupName) throws Exception;
+                                 String defaultOrderingGroupName,
+                                 long maxRetryChangeRate,
+                                 long retryChangeRateInterval) throws Exception;
 
    void unregisterConnectionFactory(String uniqueName, boolean supportsFailover, boolean supportsLoadBalancing) throws Exception;
 }

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactory.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -88,6 +88,10 @@
    private boolean enableOrderingGroup;
    
    private String defaultOrderingGroupName;
+   
+   private long maxRetryChangeRate = 0;
+   
+   private long retryChangeRateInterval = 5000;
 
    // Constructors ---------------------------------------------------------------------------------
 
@@ -208,7 +212,8 @@
                                       locatorURI, enablePing, prefetchSize, slowConsumers,
                                       defaultTempQueueFullSize, defaultTempQueuePageSize,                                      
                                       defaultTempQueueDownCacheSize, dupsOKBatchSize, supportsFailover, supportsLoadBalancing,
-                                      loadBalancingFactory, strictTck, sendAcksAsync, enableOrderingGroup, defaultOrderingGroupName);               
+                                      loadBalancingFactory, strictTck, sendAcksAsync, enableOrderingGroup, defaultOrderingGroupName,
+                                      maxRetryChangeRate, retryChangeRateInterval);               
          
          String info = "Connector " + locator.getProtocol() + "://" +
             locator.getHost() + ":" + locator.getPort();
@@ -488,6 +493,27 @@
    {
       return defaultOrderingGroupName;
    }
+   
+   public long getMaxRetryChangeRate()
+   {
+      return maxRetryChangeRate;
+   }
+   
+   public void setMaxRetryChangeRate(long maxRetryChangeRate)
+   {
+      this.maxRetryChangeRate = maxRetryChangeRate;
+   }
+   
+   public long getRetryChangeRateInterval()
+   {
+      return retryChangeRateInterval;
+   }
+   
+   public void setRetryChangeRateInterval(long retryChangeRateInterval)
+   {
+      this.retryChangeRateInterval = retryChangeRateInterval;
+   }
+   
    // JMX managed operations -----------------------------------------------------------------------
 
    // Public ---------------------------------------------------------------------------------------

Modified: branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java
===================================================================
--- branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/src/main/org/jboss/jms/server/connectionfactory/ConnectionFactoryJNDIMapper.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -131,7 +131,9 @@
                                                       boolean strictTck,
                                                       boolean sendAcksAsync,
                                                       boolean enableOrderingGroup,
-                                                      String defaultOrderingGroupName)
+                                                      String defaultOrderingGroupName,
+                                                      long maxRetryChangeRate,
+                                                      long retryChangeRateInterval)
       throws Exception
    {
       log.debug(this + " registering connection factory '" + uniqueName + "', bindings: " + jndiBindings);
@@ -186,7 +188,8 @@
       ClientConnectionFactoryDelegate localDelegate =
          new ClientConnectionFactoryDelegate(uniqueName, id, serverPeer.getServerPeerID(),
                                              locatorURI, version, clientPing, useStrict,
-                                             sendAcksAsync, enableOrderingGroup, defaultOrderingGroupName);
+                                             sendAcksAsync, enableOrderingGroup, defaultOrderingGroupName,
+                                             maxRetryChangeRate, retryChangeRateInterval);
 
       log.debug(this + " created local delegate " + localDelegate);
 

Modified: branches/JBPAPP-7443/tests/src/org/jboss/test/messaging/jms/ConnectionFactoryTest.java
===================================================================
--- branches/JBPAPP-7443/tests/src/org/jboss/test/messaging/jms/ConnectionFactoryTest.java	2011-11-01 15:12:22 UTC (rev 8471)
+++ branches/JBPAPP-7443/tests/src/org/jboss/test/messaging/jms/ConnectionFactoryTest.java	2011-11-01 15:57:22 UTC (rev 8472)
@@ -37,9 +37,12 @@
 import javax.jms.TopicConnectionFactory;
 import javax.management.ObjectName;
 
+import org.jboss.jms.client.JBossConnection;
 import org.jboss.jms.client.JBossConnectionFactory;
 import org.jboss.jms.client.JBossMessageProducer;
+import org.jboss.jms.client.delegate.ClientConnectionDelegate;
 import org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate;
+import org.jboss.jms.client.state.ConnectionState;
 import org.jboss.jms.message.JBossMessage;
 import org.jboss.test.messaging.tools.ServerManagement;
 import org.jboss.test.messaging.tools.container.ServiceContainer;
@@ -856,6 +859,118 @@
       }
    }
 
+   //https://issues.jboss.org/browse/JBMESSAGING-1851
+   public void testChangeRateConfigSettings() throws Exception
+   {
+      Connection c = null;
+
+      try
+      {
+         String mbeanConfig = "<mbean code=\"org.jboss.jms.server.connectionfactory.ConnectionFactory\"\n" + "       name=\"jboss.messaging.connectionfactory:service=TestChangeRateConfigSettingsFactory\"\n"
+                              + "       xmbean-dd=\"xmdesc/ConnectionFactory-xmbean.xml\">\n"
+                              + "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>\n"
+                              + "       <depends optional-attribute-name=\"Connector\">jboss.messaging:service=Connector,transport=bisocket</depends>\n"
+                              + "       <attribute name=\"JNDIBindings\">\n"
+                              + "          <bindings>\n"
+                              + "            <binding>/TestChangeRateConfigSettingsFactory</binding>\n"
+                              + "          </bindings>\n"
+                              + "       </attribute>\n"
+                              + "       <attribute name=\"MaxRetryChangeRate\">10</attribute>\n"
+                              + "       <attribute name=\"RetryChangeRateInterval\">2345</attribute>\n"
+                              + " </mbean>";
+
+         ObjectName on = ServerManagement.deploy(mbeanConfig);
+         ServerManagement.invoke(on, "create", new Object[0], new String[0]);
+         ServerManagement.invoke(on, "start", new Object[0], new String[0]);
+
+         ConnectionFactory cf = (ConnectionFactory)ic.lookup("/TestChangeRateConfigSettingsFactory");
+         c = cf.createConnection();
+         
+         ClientConnectionDelegate del1 = (ClientConnectionDelegate)((JBossConnection)c).getDelegate();
+         
+         ConnectionState state1 = (ConnectionState)del1.getState();
+         
+         long maxRetry = state1.getMaxRetryChangeRate();
+         
+         assertEquals(10, maxRetry);
+         
+         long retryInterval = state1.getRetryChangeRateInterval();
+         
+         assertEquals(2345, retryInterval);
+      }
+      finally
+      {
+         try
+         {
+            if (c != null)
+            {
+               log.info("Closing connection");
+               c.close();
+               log.info("Closed connection");
+            }
+         }
+         catch (Exception e)
+         {
+            log.warn(e.toString(), e);
+         }
+      }
+   }
+
+   //https://issues.jboss.org/browse/JBMESSAGING-1851
+   public void testChangeRateConfigDefaults() throws Exception
+   {
+      Connection c = null;
+
+      try
+      {
+         String mbeanConfig = "<mbean code=\"org.jboss.jms.server.connectionfactory.ConnectionFactory\"\n" + "       name=\"jboss.messaging.connectionfactory:service=TestChangeRateConfigDefaultsFactory\"\n"
+                              + "       xmbean-dd=\"xmdesc/ConnectionFactory-xmbean.xml\">\n"
+                              + "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>\n"
+                              + "       <depends optional-attribute-name=\"Connector\">jboss.messaging:service=Connector,transport=bisocket</depends>\n"
+                              + "       <attribute name=\"JNDIBindings\">\n"
+                              + "          <bindings>\n"
+                              + "            <binding>/TestChangeRateConfigDefaultsFactory</binding>\n"
+                              + "          </bindings>\n"
+                              + "       </attribute>\n"
+                              + " </mbean>";
+
+         ObjectName on = ServerManagement.deploy(mbeanConfig);
+         ServerManagement.invoke(on, "create", new Object[0], new String[0]);
+         ServerManagement.invoke(on, "start", new Object[0], new String[0]);
+
+         ConnectionFactory cf = (ConnectionFactory)ic.lookup("/TestChangeRateConfigDefaultsFactory");
+         c = cf.createConnection();
+         
+         ClientConnectionDelegate del1 = (ClientConnectionDelegate)((JBossConnection)c).getDelegate();
+         
+         ConnectionState state1 = (ConnectionState)del1.getState();
+         
+         long maxRetry = state1.getMaxRetryChangeRate();
+         
+         assertEquals(0, maxRetry);
+         
+         long retryInterval = state1.getRetryChangeRateInterval();
+         
+         assertEquals(5000, retryInterval);
+      }
+      finally
+      {
+         try
+         {
+            if (c != null)
+            {
+               log.info("Closing connection");
+               c.close();
+               log.info("Closed connection");
+            }
+         }
+         catch (Exception e)
+         {
+            log.warn(e.toString(), e);
+         }
+      }
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------



More information about the jboss-cvs-commits mailing list