You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2008/09/09 14:37:25 UTC

svn commit: r693449 - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/store/jdbc/ test/java/org/apache/activemq/broker/ft/

Author: gtully
Date: Tue Sep  9 05:37:25 2008
New Revision: 693449

URL: http://svn.apache.org/viewvc?rev=693449&view=rev
Log:
AMQ-1931 - expose lockAcquireSleepInterval on DefaultDatabaseLocker and JDBCPersistenceAdapter

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/JDBCQueueMasterSlaveTest.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java?rev=693449&r1=693448&r2=693449&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/DefaultDatabaseLocker.java Tue Sep  9 05:37:25 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.activemq.store.jdbc;
 
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
@@ -32,13 +33,19 @@
  * @version $Revision: $
  */
 public class DefaultDatabaseLocker implements DatabaseLocker {
+    public static final long DEFAULT_LOCK_ACQUIRE_SLEEP_INTERVAL = 1000;
     private static final Log LOG = LogFactory.getLog(DefaultDatabaseLocker.class);
     private final DataSource dataSource;
     private final Statements statements;
-    private long sleepTime = 1000;
+    private long lockAcquireSleepInterval = DEFAULT_LOCK_ACQUIRE_SLEEP_INTERVAL;
+
     private Connection connection;
     private boolean stopping;
 
+    public DefaultDatabaseLocker(JDBCPersistenceAdapter persistenceAdapter) throws IOException {
+        this(persistenceAdapter.getLockDataSource(), persistenceAdapter.getStatements());
+    }
+
     public DefaultDatabaseLocker(DataSource dataSource, Statements statements) {
         this.dataSource = dataSource;
         this.statements = statements;
@@ -80,8 +87,8 @@
                 }
             }
 
-            LOG.debug("Sleeping for " + sleepTime + " milli(s) before trying again to get the lock...");
-            Thread.sleep(sleepTime);
+            LOG.debug("Sleeping for " + lockAcquireSleepInterval + " milli(s) before trying again to get the lock...");
+            Thread.sleep(lockAcquireSleepInterval);
         }
 
         LOG.info("Becoming the master on dataSource: " + dataSource);
@@ -118,4 +125,12 @@
         }
         return result;
     }
+ 
+    public long getLockAcquireSleepInterval() {
+        return lockAcquireSleepInterval;
+    }
+
+    public void setLockAcquireSleepInterval(long lockAcquireSleepInterval) {
+        this.lockAcquireSleepInterval = lockAcquireSleepInterval;
+    }
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java?rev=693449&r1=693448&r2=693449&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java Tue Sep  9 05:37:25 2008
@@ -78,6 +78,7 @@
     private boolean useExternalMessageReferences;
     private boolean useDatabaseLock = true;
     private long lockKeepAlivePeriod = 1000*30;
+    private long lockAcquireSleepInterval = DefaultDatabaseLocker.DEFAULT_LOCK_ACQUIRE_SLEEP_INTERVAL;
     private DatabaseLocker databaseLocker;
     private boolean createTablesOnStartup = true;
     private DataSource lockDataSource;
@@ -500,7 +501,9 @@
     }
 
     protected DatabaseLocker createDatabaseLocker() throws IOException {
-        return new DefaultDatabaseLocker(getLockDataSource(), getStatements());
+        DefaultDatabaseLocker locker = new DefaultDatabaseLocker(this);
+        locker.setLockAcquireSleepInterval(getLockAcquireSleepInterval());
+        return locker;
     }
 
     public void setBrokerName(String brokerName) {
@@ -527,4 +530,16 @@
     public void setLockKeepAlivePeriod(long lockKeepAlivePeriod) {
         this.lockKeepAlivePeriod = lockKeepAlivePeriod;
     }
+
+    public long getLockAcquireSleepInterval() {
+        return lockAcquireSleepInterval;
+    }
+
+    /*
+     * millisecond interval between lock acquire attempts, applied to newly created DefaultDatabaseLocker
+     * not applied if DataBaseLocker is injected.
+     */
+    public void setLockAcquireSleepInterval(long lockAcquireSleepInterval) {
+        this.lockAcquireSleepInterval = lockAcquireSleepInterval;
+    }
 }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/JDBCQueueMasterSlaveTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/JDBCQueueMasterSlaveTest.java?rev=693449&r1=693448&r2=693449&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/JDBCQueueMasterSlaveTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/JDBCQueueMasterSlaveTest.java Tue Sep  9 05:37:25 2008
@@ -25,6 +25,7 @@
         JDBCPersistenceAdapter persistenceAdapter = new JDBCPersistenceAdapter();
         persistenceAdapter.setDataSource(getExistingDataSource());
         persistenceAdapter.setLockKeepAlivePeriod(500);
+        persistenceAdapter.setLockAcquireSleepInterval(500);
         master.setPersistenceAdapter(persistenceAdapter);
         master.start();
     }