private FileStorageConfiguration createFileStoreConfig(Element storeNode) { return new FileStorageConfiguration(); }
private String getTableNameForGUID(String guid) { return dbConf.getPageStoreTableName() + guid.replace("-", ""); }
private DatabaseStorageConfiguration createDatabaseStoreConfig(Element storeNode) { DatabaseStorageConfiguration conf = new DatabaseStorageConfiguration(); conf.setBindingsTableName(getString(storeNode, "bindings-table-name", conf.getBindingsTableName(), Validators.NO_CHECK)); conf.setMessageTableName(getString(storeNode, "message-table-name", conf.getMessageTableName(), Validators.NO_CHECK)); conf.setLargeMessageTableName(getString(storeNode, "large-message-table-name", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setPageStoreTableName(getString(storeNode, "page-store-table-name", conf.getPageStoreTableName(), Validators.NO_CHECK)); conf.setNodeManagerStoreTableName(getString(storeNode, "node-manager-store-table-name", conf.getNodeManagerStoreTableName(), Validators.NO_CHECK)); conf.setJdbcConnectionUrl(getString(storeNode, "jdbc-connection-url", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setJdbcDriverClassName(getString(storeNode, "jdbc-driver-class-name", conf.getJdbcDriverClassName(), Validators.NO_CHECK)); conf.setJdbcNetworkTimeout(getInteger(storeNode, "jdbc-network-timeout", conf.getJdbcNetworkTimeout(), Validators.NO_CHECK)); conf.setJdbcLockRenewPeriodMillis(getLong(storeNode, "jdbc-lock-renew-period", conf.getJdbcLockRenewPeriodMillis(), Validators.NO_CHECK)); conf.setJdbcLockExpirationMillis(getLong(storeNode, "jdbc-lock-expiration", conf.getJdbcLockExpirationMillis(), Validators.NO_CHECK)); conf.setJdbcJournalSyncPeriodMillis(getLong(storeNode, "jdbc-journal-sync-period", conf.getJdbcJournalSyncPeriodMillis(), Validators.NO_CHECK)); return conf; }
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
protected DatabaseStorageConfiguration createDefaultDatabaseStorageConfiguration() { DatabaseStorageConfiguration dbStorageConfiguration = new DatabaseStorageConfiguration(); dbStorageConfiguration.setJdbcConnectionUrl(getTestJDBCConnectionUrl()); dbStorageConfiguration.setBindingsTableName("BINDINGS"); dbStorageConfiguration.setMessageTableName("MESSAGE"); dbStorageConfiguration.setLargeMessageTableName("LARGE_MESSAGE"); dbStorageConfiguration.setPageStoreTableName("PAGE_STORE"); dbStorageConfiguration.setJdbcDriverClassName(getJDBCClassName()); dbStorageConfiguration.setJdbcLockAcquisitionTimeoutMillis(getJdbcLockAcquisitionTimeoutMillis()); dbStorageConfiguration.setJdbcLockExpirationMillis(getJdbcLockExpirationMillis()); dbStorageConfiguration.setJdbcLockRenewPeriodMillis(getJdbcLockRenewPeriodMillis()); return dbStorageConfiguration; }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }
IOCriticalErrorListener ioCriticalErrorListener) { validateTimeoutConfiguration(configuration); if (configuration.getDataSource() != null) { final SQLProvider.Factory sqlProviderFactory; if (configuration.getSqlProviderFactory() != null) { sqlProviderFactory = configuration.getSqlProviderFactory(); } else { sqlProviderFactory = new PropertySQLProvider.Factory(configuration.getDataSource()); configuration.getJdbcNetworkTimeout(), configuration.getJdbcLockExpirationMillis(), configuration.getJdbcLockRenewPeriodMillis(), configuration.getJdbcLockAcquisitionTimeoutMillis(), configuration.getDataSource(), sqlProviderFactory.create(configuration.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER), scheduledExecutorService, executorFactory, ioCriticalErrorListener); } else { final SQLProvider sqlProvider = JDBCUtils.getSQLProvider(configuration.getJdbcDriverClassName(), configuration.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); final String brokerId = java.util.UUID.randomUUID().toString(); return usingConnectionUrl(brokerId, configuration.getJdbcNetworkTimeout(), configuration.getJdbcLockExpirationMillis(), configuration.getJdbcLockRenewPeriodMillis(), configuration.getJdbcLockAcquisitionTimeoutMillis(), configuration.getJdbcConnectionUrl(), configuration.getJdbcDriverClassName(), sqlProvider,
@Before public void createLockTable() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); if (withExistingTable) { TestJDBCDriver testDriver = TestJDBCDriver .usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); testDriver.start(); testDriver.stop(); } jdbcSharedStateManager = JdbcSharedStateManager .usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
@Before public void setup() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL); scheduledExecutorService = new ScheduledThreadPoolExecutor(5); executorService = Executors.newSingleThreadExecutor(); journal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, scheduledExecutorService, executorService, new IOCriticalErrorListener() { @Override public void onIOException(Throwable code, String message, SequentialFile file) { } }, 5); journal.start(); }
private TestJDBCDriver createFakeDriver(boolean initializeTable) { return TestJDBCDriver.usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, initializeTable); }
private JdbcSharedStateManager createSharedStateManager() { return JdbcSharedStateManager.usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
@Before public void configure() { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); }
@Override public DataSource addingService(ServiceReference<DataSource> reference) { DataSource dataSource = context.getService(reference); dsc.setDataSource(dataSource); try (Connection conn = dataSource.getConnection()) { dsc.setSqlProvider(JDBCUtils.getSQLProviderFactory(conn.getMetaData().getURL())); } catch (SQLException ex) { ActiveMQOsgiLogger.LOGGER.errorGettingDataSourceProviderInfo(ex); } callback.setDataSourceDependency(false); try { callback.start(); } catch (Exception ex) { ActiveMQOsgiLogger.LOGGER.errorStartingBroker(ex, name); } return dataSource; }
@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(); } }
private static void validateTimeoutConfiguration(DatabaseStorageConfiguration configuration) { final long lockExpiration = configuration.getJdbcLockExpirationMillis(); if (lockExpiration <= 0) { throw new IllegalArgumentException("jdbc-lock-expiration should be positive"); } final long lockRenewPeriod = configuration.getJdbcLockRenewPeriodMillis(); if (lockRenewPeriod <= 0) { throw new IllegalArgumentException("jdbc-lock-renew-period should be positive"); } if (lockRenewPeriod >= lockExpiration) { throw new IllegalArgumentException("jdbc-lock-renew-period should be < jdbc-lock-expiration"); } final int networkTimeout = configuration.getJdbcNetworkTimeout(); if (networkTimeout >= 0) { if (networkTimeout > lockExpiration) { LOGGER.warn("jdbc-network-timeout isn't properly configured: the recommended value is <= jdbc-lock-expiration"); } } else { LOGGER.warn("jdbc-network-timeout isn't properly configured: the recommended value is <= jdbc-lock-expiration"); } }
private LeaseLock lock(long acquireMillis) { try { return JdbcSharedStateManager .createLiveLock( UUID.randomUUID().toString(), jdbcSharedStateManager.getConnection(), sqlProvider, acquireMillis); } catch (SQLException e) { throw new IllegalStateException(e); } }
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }
@Test public void testConcurrentEmptyJournal() throws SQLException { Assert.assertTrue(journal.isStarted()); Assert.assertEquals(0, journal.getNumberOfRecords()); final JDBCJournalImpl secondJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, scheduledExecutorService, executorService, (code, message, file) -> { Assert.fail(message); }, 5); secondJournal.start(); try { Assert.assertTrue(secondJournal.isStarted()); } finally { secondJournal.stop(); } }
@Override public String toString() { StringBuilder sb = new StringBuilder("Broker Configuration ("); sb.append("clustered=").append(isClustered()).append(","); if (isJDBC()) { DatabaseStorageConfiguration dsc = (DatabaseStorageConfiguration) getStoreConfiguration(); sb.append("jdbcDriverClassName=").append(dsc.getJdbcDriverClassName()).append(","); sb.append("jdbcConnectionUrl=").append(dsc.getJdbcConnectionUrl()).append(","); sb.append("messageTableName=").append(dsc.getMessageTableName()).append(","); sb.append("bindingsTableName=").append(dsc.getBindingsTableName()).append(","); sb.append("largeMessageTableName=").append(dsc.getLargeMessageTableName()).append(","); sb.append("pageStoreTableName=").append(dsc.getPageStoreTableName()).append(","); } else { sb.append("journalDirectory=").append(journalDirectory).append(","); sb.append("bindingsDirectory=").append(bindingsDirectory).append(","); sb.append("largeMessagesDirectory=").append(largeMessagesDirectory).append(","); sb.append("pagingDirectory=").append(pagingDirectory); } sb.append(")"); return sb.toString(); }