public static void describeBindingsJournal(final File bindingsDir) throws Exception { describeBindingsJournal(bindingsDir, System.out, false); }
public static DescribeJournal describeMessagesJournal(final File messagesDir) throws Exception { return describeMessagesJournal(messagesDir, System.out, false); }
public static Object newObjectEncoding(RecordInfo info) { return newObjectEncoding(info, null); }
private static String describeRecord(RecordInfo info, boolean safe) { return "recordID=" + info.id + ";userRecordType=" + info.userRecordType + ";isUpdate=" + info.isUpdate + ";compactCount=" + info.compactCount + ";" + toString(newObjectEncoding(info), safe); }
void printJournal(TestableServer server) { try { System.out.println("\n\n BINDINGS JOURNAL\n\n"); Configuration config = server.getServer().getConfiguration(); DescribeJournal.describeBindingsJournal(config.getBindingsLocation()); System.out.println("\n\n MESSAGES JOURNAL\n\n"); DescribeJournal.describeMessagesJournal(config.getJournalLocation()); } catch (Exception ignored) { ignored.printStackTrace(); } }
long queueIDForCounter = 0; Object o = newObjectEncoding(info); if (info.getUserRecordType() == JournalRecordIds.ADD_MESSAGE) { messageCount++; queueIDForCounter = encoding.getQueueID(); subsCounter = lookupCounter(counters, queueIDForCounter); queueIDForCounter = encoding.getQueueID(); subsCounter = lookupCounter(counters, queueIDForCounter); out.println(describeRecord(info, o, safe)); printCounters(out, counters); out.println(tx.getId()); for (RecordInfo info : tx.getRecords()) { Object o = newObjectEncoding(info); out.println("- " + describeRecord(info, o, safe)); if (info.getUserRecordType() == 31) { preparedMessageCount++; out.println("- " + describeRecord(info, safe) + " <marked to delete>"); return new DescribeJournal(records, preparedTransactions);
public void checkRecordCounter(RecordInfo info) { if (info.getUserRecordType() == JournalRecordIds.PAGE_CURSOR_COUNTER_VALUE) { PageCountRecord encoding = (PageCountRecord) newObjectEncoding(info); long queueIDForCounter = encoding.getQueueID(); PageSubscriptionCounterImpl subsCounter = lookupCounter(counters, queueIDForCounter); PageCountRecordInc encoding = (PageCountRecordInc) newObjectEncoding(info); long queueIDForCounter = encoding.getQueueID(); PageSubscriptionCounterImpl subsCounter = lookupCounter(counters, queueIDForCounter);
printCounters(out, counters); return printSurvivingRecords(journal, out, safe);
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 static DescribeJournal describeMessagesJournal(final File messagesDir, PrintStream out, boolean safe) throws Exception { Configuration configuration = getConfiguration(); SequentialFileFactory messagesFF = new NIOSequentialFileFactory(messagesDir, null, 1); // Will use only default values. The load function should adapt to anything different JournalImpl messagesJournal = new JournalImpl(configuration.getJournalFileSize(), configuration.getJournalMinFiles(), configuration.getJournalPoolFiles(), 0, 0, messagesFF, "activemq-data", "amq", 1); return describeJournal(messagesFF, messagesJournal, messagesDir, out, safe); }
server.stop(); DescribeJournal journal = new DescribeJournal(null, null); System.setProperty("artemis.instance", this.getClass().getClassLoader().getResource("dataprint").getFile());
PrintStream out, boolean safe) throws Exception { PageCursorsInfo cursorACKs = calculateCursorsInfo(describeJournal.getRecords());
public static void describeBindingsJournal(final File bindingsDir, PrintStream out, boolean safe) throws Exception { SequentialFileFactory bindingsFF = new NIOSequentialFileFactory(bindingsDir, null, 1); JournalImpl bindings = new JournalImpl(1024 * 1024, 2, 2, -1, 0, bindingsFF, "activemq-bindings", "bindings", 1); describeJournal(bindingsFF, bindings, bindingsDir, out, safe); }
DescribeJournal.describeBindingsJournal(bindingsDirectory, out, safe); } catch (Exception e) { e.printStackTrace(); describeJournal = DescribeJournal.describeMessagesJournal(messagesDirectory, out, safe); } catch (Exception e) { e.printStackTrace();
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 {
PrintStream out, boolean safe) throws Exception { PageCursorsInfo cursorACKs = calculateCursorsInfo(describeJournal.getRecords());
DescribeJournal.describeBindingsJournal(bindingsDirectory, out, safe); } catch (Exception e) { e.printStackTrace(); describeJournal = DescribeJournal.describeMessagesJournal(messagesDirectory, out, safe); } catch (Exception e) { e.printStackTrace();
/** * Go back through the messages and message refs we found in the journal and remove the ones that have been acked. * * @param acks the list of ack records we got from the journal */ private void removeAcked(ArrayList<RecordInfo> acks) { for (RecordInfo info : acks) { AckDescribe ack = (AckDescribe) DescribeJournal.newObjectEncoding(info, null); HashMap<Long, ReferenceDescribe> referenceDescribeHashMap = messageRefs.get(info.id); referenceDescribeHashMap.remove(ack.refEncoding.queueID); if (referenceDescribeHashMap.size() == 0) { messages.remove(info.id); messageRefs.remove(info.id); } } }
/** * Go back through the messages and message refs we found in the journal and remove the ones that have been acked. * * @param acks the list of ack records we got from the journal */ private void removeAcked(ArrayList<RecordInfo> acks) { for (RecordInfo info : acks) { AckDescribe ack = (AckDescribe) DescribeJournal.newObjectEncoding(info, null); HashMap<Long, ReferenceDescribe> referenceDescribeHashMap = messageRefs.get(info.id); referenceDescribeHashMap.remove(ack.refEncoding.queueID); if (referenceDescribeHashMap.size() == 0) { messages.remove(info.id); messageRefs.remove(info.id); } } }
/** * Open the bindings journal and extract all bindings data. * * @throws Exception will be thrown if anything goes wrong reading the bindings journal */ private void getBindings() throws Exception { List<RecordInfo> records = new LinkedList<>(); Journal bindingsJournal = storageManager.getBindingsJournal(); bindingsJournal.start(); ActiveMQServerLogger.LOGGER.debug("Reading bindings journal from " + config.getBindingsDirectory()); bindingsJournal.load(records, null, null); for (RecordInfo info : records) { if (info.getUserRecordType() == JournalRecordIds.QUEUE_BINDING_RECORD) { PersistentQueueBindingEncoding bindingEncoding = (PersistentQueueBindingEncoding) DescribeJournal.newObjectEncoding(info, null); queueBindings.put(bindingEncoding.getId(), bindingEncoding); } else if (info.getUserRecordType() == JournalRecordIds.ADDRESS_BINDING_RECORD) { PersistentAddressBindingEncoding bindingEncoding = (PersistentAddressBindingEncoding) DescribeJournal.newObjectEncoding(info, null); addressBindings.put(bindingEncoding.getId(), bindingEncoding); } } bindingsJournal.stop(); }