You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/04/13 23:17:18 UTC
[1/2] activemq-artemis git commit: This closes #1200
Repository: activemq-artemis
Updated Branches:
refs/heads/master f60988418 -> b652c1b5a
This closes #1200
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b652c1b5
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b652c1b5
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b652c1b5
Branch: refs/heads/master
Commit: b652c1b5a9ba3bc7ae5463b832b720e9da9aff3e
Parents: f609884 aa9ac4a
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Apr 13 19:17:10 2017 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Apr 13 19:17:10 2017 -0400
----------------------------------------------------------------------
.../drivers/oracle/Oracle12CSQLProvider.java | 4 ++--
.../paging/impl/PagingStoreFactoryDatabase.java | 9 ++++++--
.../impl/DatabaseStoreConfigurationTest.java | 18 ++++++++-------
.../tests/integration/paging/PagingTest.java | 23 ++++++++++++++++++++
4 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
[2/2] activemq-artemis git commit: ARTEMIS-1084 Throw RunTime on bad
Oracle table size
Posted by cl...@apache.org.
ARTEMIS-1084 Throw RunTime on bad Oracle table size
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/aa9ac4a9
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/aa9ac4a9
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/aa9ac4a9
Branch: refs/heads/master
Commit: aa9ac4a914c18ef9421c769f8cb40e1a6b3b9972
Parents: f609884
Author: Francesco Nigro <ni...@gmail.com>
Authored: Tue Apr 11 16:14:54 2017 +0200
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Apr 13 19:17:10 2017 -0400
----------------------------------------------------------------------
.../drivers/oracle/Oracle12CSQLProvider.java | 4 ++--
.../paging/impl/PagingStoreFactoryDatabase.java | 9 ++++++--
.../impl/DatabaseStoreConfigurationTest.java | 18 ++++++++-------
.../tests/integration/paging/PagingTest.java | 23 ++++++++++++++++++++
4 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/aa9ac4a9/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/oracle/Oracle12CSQLProvider.java
----------------------------------------------------------------------
diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/oracle/Oracle12CSQLProvider.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/oracle/Oracle12CSQLProvider.java
index ac58bd3..c9f661d 100644
--- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/oracle/Oracle12CSQLProvider.java
+++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/oracle/Oracle12CSQLProvider.java
@@ -29,8 +29,8 @@ public class Oracle12CSQLProvider extends GenericSQLProvider {
protected Oracle12CSQLProvider(String tableName, DatabaseStoreType databaseStoreType) {
super(tableName.toUpperCase(), databaseStoreType);
- if (tableName.length() > 10 && databaseStoreType == DatabaseStoreType.PAGE) {
- throw new RuntimeException("The maximum name size for the paging store table, when using Oracle12C is 10 characters.");
+ if (tableName.length() > 30) {
+ throw new RuntimeException("The maximum name size for the " + databaseStoreType.name().toLowerCase() + " store table, when using Oracle12C is 30 characters.");
}
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/aa9ac4a9/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java
index 31fc729..3177b6e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java
@@ -109,15 +109,20 @@ public class PagingStoreFactoryDatabase implements PagingStoreFactory {
public synchronized void start() throws Exception {
if (!started) {
+ //fix to prevent page table names to be longer than 30 chars (upper limit for Oracle12c identifiers length)
+ final String pageStoreTableNamePrefix = dbConf.getPageStoreTableName();
+ if (pageStoreTableNamePrefix.length() > 10) {
+ throw new IllegalStateException("The maximum name size for the page store table prefix is 10 characters: THE PAGING STORE CAN'T START");
+ }
if (dbConf.getDataSource() != null) {
SQLProvider.Factory sqlProviderFactory = dbConf.getSqlProviderFactory();
if (sqlProviderFactory == null) {
sqlProviderFactory = new GenericSQLProvider.Factory();
}
- pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getDataSource(), sqlProviderFactory.create(dbConf.getPageStoreTableName(), SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor());
+ pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getDataSource(), sqlProviderFactory.create(pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor());
} else {
String driverClassName = dbConf.getJdbcDriverClassName();
- pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getPageStoreTableName(), SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor());
+ pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor());
}
pagingFactoryFileFactory.start();
started = true;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/aa9ac4a9/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/DatabaseStoreConfigurationTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/DatabaseStoreConfigurationTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/DatabaseStoreConfigurationTest.java
index 27e3593..58745a2 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/DatabaseStoreConfigurationTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/DatabaseStoreConfigurationTest.java
@@ -36,15 +36,17 @@ public class DatabaseStoreConfigurationTest extends ActiveMQTestBase {
@Test
public void testOracle12TableSize() {
- Throwable rte = null;
- try {
- new Oracle12CSQLProvider.Factory().create("A_TABLE_NAME_THAT_IS_TOO_LONG", SQLProvider.DatabaseStoreType.PAGE);
- } catch (Throwable t) {
- rte = t;
- }
+ for (SQLProvider.DatabaseStoreType storeType : SQLProvider.DatabaseStoreType.values()) {
+ Throwable rte = null;
+ try {
+ new Oracle12CSQLProvider.Factory().create("_A_TABLE_NAME_THAT_IS_TOO_LONG_", storeType);
+ } catch (Throwable t) {
+ rte = t;
+ }
- assertNotNull(rte);
- assertTrue(rte.getMessage().contains("The maximum name size for the paging store table, when using Oracle12C is 10 characters."));
+ assertNotNull(rte);
+ assertTrue(rte.getMessage().contains("The maximum name size for the " + storeType.name().toLowerCase() + " store table, when using Oracle12C is 30 characters."));
+ }
}
protected Configuration createConfiguration(String fileName) throws Exception {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/aa9ac4a9/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
index 48127d2..ddabf1b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java
@@ -55,6 +55,7 @@ import org.apache.activemq.artemis.core.client.impl.ClientConsumerInternal;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.DivertConfiguration;
import org.apache.activemq.artemis.core.config.StoreConfiguration;
+import org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration;
import org.apache.activemq.artemis.core.filter.Filter;
import org.apache.activemq.artemis.core.io.IOCallback;
import org.apache.activemq.artemis.core.journal.Journal;
@@ -151,6 +152,28 @@ public class PagingTest extends ActiveMQTestBase {
}
@Test
+ public void testTooLongPageStoreTableNamePrefix() throws Exception {
+ if (storeType == StoreConfiguration.StoreType.DATABASE) {
+ final Configuration config = createDefaultInVMConfig();
+ final DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) config.getStoreConfiguration();
+ //set the page store table to be longer than 10 chars -> the paging manager initialization will fail
+ storageConfiguration.setPageStoreTableName("PAGE_STORE_");
+
+ final int PAGE_MAX = 20 * 1024;
+
+ final int PAGE_SIZE = 10 * 1024;
+
+ final ActiveMQServer server = createServer(true, config, PAGE_SIZE, PAGE_MAX);
+ server.start();
+
+ //due to a failed initialisation of the paging manager, it must be null
+ Assert.assertNull(server.getPagingManager());
+
+ server.stop();
+ }
+ }
+
+ @Test
public void testPageOnLargeMessageMultipleQueues() throws Exception {
Configuration config = createDefaultInVMConfig();