@Override public void run() { try { while (running.get()) { Thread.sleep(500); System.out.println("Compacting"); ((JournalImpl) storage.getMessageJournal()).testCompact(); ((JournalImpl) storage.getMessageJournal()).checkReclaimStatus(); } } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } } };
static JournalImpl getMessageJournalFromServer(TestableServer server) { JournalStorageManager sm = (JournalStorageManager) server.getServer().getStorageManager(); return (JournalImpl) sm.getMessageJournal(); }
Journal messageJournal = storageManager.getMessageJournal();
Journal messageJournal = storageManager.getMessageJournal();
public void printDataJDBC(Configuration configuration, PrintStream out) throws Exception { initializeJournal(configuration); Artemis.printBanner(out); printBanner(out, BINDINGS_BANNER); DescribeJournal.printSurvivingRecords(storageManager.getBindingsJournal(), out, safe); printBanner(out, MESSAGES_BANNER); DescribeJournal describeJournal = DescribeJournal.printSurvivingRecords(storageManager.getMessageJournal(), out, safe); printPages(describeJournal, storageManager, pagingmanager, out, safe); cleanup(); } public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory) throws Exception {
public void printDataJDBC(Configuration configuration, PrintStream out) throws Exception { initializeJournal(configuration); Artemis.printBanner(out); printBanner(out, BINDINGS_BANNER); DescribeJournal.printSurvivingRecords(storageManager.getBindingsJournal(), out, safe); printBanner(out, MESSAGES_BANNER); DescribeJournal describeJournal = DescribeJournal.printSurvivingRecords(storageManager.getMessageJournal(), out, safe); printPages(describeJournal, storageManager, pagingmanager, out, safe); cleanup(); } public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory) throws Exception {
@Test public void testPageCursorCounterRecordSize() throws Exception { server.getStorageManager().storePageCounterInc(1, 1, 1000); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); ActiveMQBuffer buff = ActiveMQBuffers.wrappedBuffer(committedRecords.get(0).data); PageCountRecordInc encoding = new PageCountRecordInc(); encoding.decode(buff); Assert.assertEquals(1000, encoding.getPersistentSize()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testPageCountRecordSize() throws Exception { long tx = server.getStorageManager().generateID(); server.getStorageManager().storePageCounter(tx, 1, 1, 100); server.getStorageManager().commit(tx); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); ActiveMQBuffer buff = ActiveMQBuffers.wrappedBuffer(committedRecords.get(0).data); PageCountRecord encoding = new PageCountRecord(); encoding.decode(buff); Assert.assertEquals(100, encoding.getPersistentSize()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testPageCursorCounterRecordSizeTX() throws Exception { long tx = server.getStorageManager().generateID(); server.getStorageManager().storePageCounterInc(tx, 1, 1, 1000); server.getStorageManager().commit(tx); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); ActiveMQBuffer buff = ActiveMQBuffers.wrappedBuffer(committedRecords.get(0).data); PageCountRecordInc encoding = new PageCountRecordInc(); encoding.decode(buff); Assert.assertEquals(1000, encoding.getPersistentSize()); } finally { journalStorageManager.getMessageJournal().stop(); } }
storage.loadInternalOnly(); ((JournalImpl) storage.getMessageJournal()).setAutoReclaim(false); final LinkedList<Long> survivingMsgs = new LinkedList<>();
@Test public void testStoreAMQP() throws Throwable { ActiveMQServer server = createServer(true); server.start(); ProtonProtocolManagerFactory factory = (ProtonProtocolManagerFactory) server.getRemotingService().getProtocolFactoryMap().get("AMQP"); MessageImpl protonJMessage = (MessageImpl) Message.Factory.create(); AMQPMessage message = encodeAndCreateAMQPMessage(protonJMessage); message.setMessageID(333); Assert.assertNotNull(factory); server.getStorageManager().storeMessage(message); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); TransactionFailureCallback transactionFailure = new TransactionFailureCallback() { @Override public void failedTransaction(long transactionID, List<RecordInfo> records, List<RecordInfo> recordsToDelete) { } }; try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); Assert.assertEquals(1, committedRecords.size()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testStoreCore() throws Throwable { ActiveMQServer server = createServer(true); server.start(); CoreMessage message = new CoreMessage().initBuffer(10 * 1024).setDurable(true); message.setMessageID(333); CoreProtocolManagerFactory factory = (CoreProtocolManagerFactory) server.getRemotingService().getProtocolFactoryMap().get("CORE"); Assert.assertNotNull(factory); message.getBodyBuffer().writeByte((byte)'Z'); server.getStorageManager().storeMessage(message); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); TransactionFailureCallback transactionFailure = new TransactionFailureCallback() { @Override public void failedTransaction(long transactionID, List<RecordInfo> records, List<RecordInfo> recordsToDelete) { } }; try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); Assert.assertEquals(1, committedRecords.size()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testConstant() { Configuration configuration = new ConfigurationImpl(); configuration.setJournalType(JournalType.NIO); configuration.setJournalPoolFiles(11); configuration.setJournalCompactMinFiles(22); configuration.setJournalCompactPercentage(33); JournalStorageManager journalStorageManager = new JournalStorageManager(configuration, null, dumbExecutor, dumbScheduler, dumbExecutor); JournalImpl journal = (JournalImpl)journalStorageManager.getBindingsJournal(); assertJournalConstants(journal); journal = (JournalImpl)journalStorageManager.getMessageJournal(); assertJournalConstants(journal); }
@Test public void testShutdownServer() throws Throwable { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true, false); session.createQueue(QUEUE, QUEUE, null, true); ClientConsumer consumer = session.createConsumer(QUEUE); ClientProducer producer = session.createProducer(QUEUE); ClientMessage message = session.createMessage(Message.TEXT_TYPE, true, 0, System.currentTimeMillis(), (byte) 4); message.getBodyBuffer().writeString("hi"); message.putStringProperty("hello", "elo"); producer.send(message); ActiveMQServerImpl impl = (ActiveMQServerImpl) server; JournalStorageManager journal = (JournalStorageManager) impl.getStorageManager(); JDBCJournalImpl journalimpl = (JDBCJournalImpl) journal.getMessageJournal(); journalimpl.handleException(null, new Exception("failure")); Wait.waitFor(() -> !server.isStarted()); Assert.assertFalse(server.isStarted()); }
@Test public void testIncorrectFileSizeHigher() { ConfigurationImpl config = new ConfigurationImpl(); int origFileSize = config.getJournalFileSize(); config.setJournalFileSize(origFileSize + (align / 2 + 1)); JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); int fileSize = manager.getMessageJournal().getFileSize(); Assert.assertEquals(origFileSize + align, fileSize); }
@Test public void testIncorrectFileSizeLower() { ConfigurationImpl config = new ConfigurationImpl(); int origFileSize = config.getJournalFileSize(); config.setJournalFileSize(origFileSize + (align / 2 - 1)); JournalStorageManager manager = new JournalStorageManager(config, EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); int fileSize = manager.getMessageJournal().getFileSize(); Assert.assertEquals(origFileSize, fileSize); }
@Test public void testIncorrectFileSizeHalf() { ConfigurationImpl config = new ConfigurationImpl(); int origFileSize = config.getJournalFileSize(); config.setJournalFileSize(origFileSize + (align / 2)); JournalStorageManager manager = new JournalStorageManager(config,EmptyCriticalAnalyzer.getInstance(), new OrderedExecutorFactory(null), new OrderedExecutorFactory(null)); int fileSize = manager.getMessageJournal().getFileSize(); Assert.assertEquals(origFileSize + align, fileSize); } }