Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ public class LockList extends ConnectionAbstract {
@CommandLine.Option(names = "--sleep", description = "Monitor locks continuously by repeating the command at the specified interval in milliseconds. Use -1 to disable (default).", defaultValue = "-1")
private long sleep = -1;

@CommandLine.Option(names = "--ascii", description = "Use ASCII table output style")
private boolean ascii = false;

@Override
public Object execute(ActionContext context) throws Exception {
super.execute(context);
Expand Down Expand Up @@ -93,10 +96,12 @@ private void printStats(ActionContext context, JsonArray array) {
columnSizes[2] = Math.max(columnSizes[2], lock.getString("status", "").length());
}

TableOut tableOut = new TableOut("|", 2, columnSizes);
TableOut tableOut = new TableOut("|", 2, columnSizes).setAscii(ascii);

// Print header
tableOut.printTopSeparator(context.out);
tableOut.print(context.out, fieldTitles, centralize);
tableOut.printSeparator(context.out);

// Print data rows
for (int i = 0; i < array.size(); i++) {
Expand All @@ -108,6 +113,7 @@ private void printStats(ActionContext context, JsonArray array) {
};
tableOut.print(context.out, columns, centralize);
}
tableOut.printBottomSeparator(context.out);
context.out.println();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.apache.activemq.artemis.json.JsonArray;
import org.apache.activemq.artemis.json.JsonObject;
import org.apache.activemq.artemis.utils.TableOut;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;

Expand Down Expand Up @@ -119,6 +120,18 @@ public enum OPERATION {
@Option(names = "--json", description = "Prints the queue stat information in JSON format, useful for scripts")
private boolean json;

@CommandLine.Option(names = "--ascii", description = "Use ASCII table output style")
private boolean ascii = false;

public boolean isAscii() {
return ascii;
}

public StatQueue setAscii(boolean ascii) {
this.ascii = ascii;
return this;
}

public boolean isSingleLineHeader() {
return singleLineHeader;
}
Expand Down Expand Up @@ -340,12 +353,16 @@ private void printStats(String result) {
getColumnSizes(array.getJsonObject(i), columnSizes);
}

TableOut tableOut = new TableOut("|", 2, columnSizes);
TableOut tableOut = new TableOut("|", 2, columnSizes).setAscii(ascii);

if (singleLineHeader) {
printHeadings(columnSizes);
} else {
tableOut.printTopSeparator(getActionContext().out);
tableOut.print(getActionContext().out, fieldTitles, centralize);
if (!ascii) {
tableOut.printSeparator(getActionContext().out);
}
}

for (int i = 0; i < array.size(); i++) {
Expand All @@ -355,6 +372,7 @@ private void printStats(String result) {
printQueueStats(array.getJsonObject(i), columnSizes, centralize, tableOut);
statCount++;
}
tableOut.printBottomSeparator(getActionContext().out);

if (count > maxRows) {
getActionContext().out.println(String.format("WARNING: the displayed queues are %d/%d, set maxRows to display more queues.", maxRows, count));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
import org.apache.activemq.artemis.utils.actors.ArtemisExecutor;
import org.apache.activemq.artemis.utils.collections.LinkedList;
import org.apache.activemq.artemis.utils.collections.LinkedListIterator;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;

Expand All @@ -84,21 +85,21 @@ public class PrintData extends DBOption {
@Option(names = "--skip-journal", description = "Do not print data from the messages journal.")
private boolean skipJournal = false;

@Option(names = "--legacy", description = "Use legacy semicolon-separated output format instead of table columns.")
private boolean legacyOutput = false;
@CommandLine.Option(names = "--ascii", description = "Use ASCII table output style")
private boolean ascii = false;

private static final String BINDINGS_BANNER = "B I N D I N G S J O U R N A L";
private static final String MESSAGES_BANNER = "M E S S A G E S J O U R N A L";
static {
MessagePersister.registerPersister(CoreMessagePersister.getInstance());
}

public boolean isLegacyOutput() {
return legacyOutput;
public boolean isAscii() {
return ascii;
}

public PrintData setLegacyOutput(boolean legacyOutput) {
this.legacyOutput = legacyOutput;
public PrintData setAscii(boolean ascii) {
this.ascii = ascii;
return this;
}

Expand All @@ -112,7 +113,7 @@ public Object execute(ActionContext context) throws Exception {
if (configuration.isJDBC()) {
printDataJDBC(configuration, context.out);
} else {
printData(new File(getBinding()), new File(getJournal()), new File(getPaging()), context.out, safe, reclaimed, skipBindings, skipJournal, maxPages, legacyOutput);
printData(new File(getBinding()), new File(getJournal()), new File(getPaging()), context.out, safe, reclaimed, skipBindings, skipJournal, maxPages, ascii);
}
} catch (Exception e) {
treatError(e, "data", "print");
Expand All @@ -130,13 +131,13 @@ public void printDataJDBC(Configuration configuration, PrintStream out) throws E

printBanner(out, BINDINGS_BANNER);

DescribeJournal bindings = DescribeJournal.printSurvivingRecords(storageManager.getBindingsJournal(), out, safe, legacyOutput);
DescribeJournal bindings = DescribeJournal.printSurvivingRecords(storageManager.getBindingsJournal(), out, safe, ascii);

printBanner(out, MESSAGES_BANNER);

DescribeJournal describeJournal = DescribeJournal.printSurvivingRecords(storageManager.getMessageJournal(), out, safe, legacyOutput);
DescribeJournal describeJournal = DescribeJournal.printSurvivingRecords(storageManager.getMessageJournal(), out, safe, ascii);

printPages(describeJournal, storageManager, pagingmanager, out, safe, maxPages, bindings, legacyOutput);
printPages(describeJournal, storageManager, pagingmanager, out, safe, maxPages, bindings, ascii);

cleanup();

Expand All @@ -162,7 +163,7 @@ public static void printData(File bindingsDirectory, File messagesDirectory, Fil
printData(bindingsDirectory, messagesDirectory, pagingDirectory, out, safe, reclaimed, skipBindings, skipJournal, maxPages, false);
}

public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory, PrintStream out, boolean safe, boolean reclaimed, boolean skipBindings, boolean skipJournal, int maxPages, boolean legacyOutput) throws Exception {
public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory, PrintStream out, boolean safe, boolean reclaimed, boolean skipBindings, boolean skipJournal, int maxPages, boolean ascii) throws Exception {
// printing the banner and version
Artemis.printBanner(out);

Expand All @@ -186,7 +187,7 @@ public static void printData(File bindingsDirectory, File messagesDirectory, Fil
out.println();
bindingsDescribe = null;
} else {
bindingsDescribe = printBindings(bindingsDirectory, out, safe, true, true, reclaimed, legacyOutput);
bindingsDescribe = printBindings(bindingsDirectory, out, safe, true, true, reclaimed, ascii);
}

printBanner(out, MESSAGES_BANNER);
Expand All @@ -195,7 +196,7 @@ public static void printData(File bindingsDirectory, File messagesDirectory, Fil
out.println();
}
DescribeJournal describeJournal = null;
describeJournal = printMessages(messagesDirectory, out, safe, !skipJournal, !skipJournal, reclaimed, legacyOutput);
describeJournal = printMessages(messagesDirectory, out, safe, !skipJournal, !skipJournal, reclaimed, ascii);

if (describeJournal == null) {
return;
Expand All @@ -207,7 +208,7 @@ public static void printData(File bindingsDirectory, File messagesDirectory, Fil
out.println(".... skipping");
out.println();
} else {
printPages(pagingDirectory, describeJournal, out, safe, maxPages, bindingsDescribe, legacyOutput);
printPages(pagingDirectory, describeJournal, out, safe, maxPages, bindingsDescribe, ascii);
}
} catch (Exception e) {
e.printStackTrace();
Expand All @@ -220,10 +221,10 @@ public static DescribeJournal printMessages(File messagesDirectory, PrintStream
return printMessages(messagesDirectory, out, safe, printRecords, printSurviving, reclaimed, false);
}

public static DescribeJournal printMessages(File messagesDirectory, PrintStream out, boolean safe, boolean printRecords, boolean printSurviving, boolean reclaimed, boolean legacyOutput) {
public static DescribeJournal printMessages(File messagesDirectory, PrintStream out, boolean safe, boolean printRecords, boolean printSurviving, boolean reclaimed, boolean ascii) {
DescribeJournal describeJournal;
try {
describeJournal = DescribeJournal.describeMessagesJournal(messagesDirectory, out, safe, printRecords, printSurviving, reclaimed, legacyOutput);
describeJournal = DescribeJournal.describeMessagesJournal(messagesDirectory, out, safe, printRecords, printSurviving, reclaimed, ascii);
} catch (Exception e) {
e.printStackTrace();
return null;
Expand All @@ -235,9 +236,9 @@ public static DescribeJournal printBindings(File bindingsDirectory, PrintStream
return printBindings(bindingsDirectory, out, safe, printRecords, printSurviving, reclaimed, false);
}

public static DescribeJournal printBindings(File bindingsDirectory, PrintStream out, boolean safe, boolean printRecords, boolean printSurviving, boolean reclaimed, boolean legacyOutput) {
public static DescribeJournal printBindings(File bindingsDirectory, PrintStream out, boolean safe, boolean printRecords, boolean printSurviving, boolean reclaimed, boolean ascii) {
try {
return DescribeJournal.describeBindingsJournal(bindingsDirectory, out, safe, printRecords, printSurviving, reclaimed, legacyOutput);
return DescribeJournal.describeBindingsJournal(bindingsDirectory, out, safe, printRecords, printSurviving, reclaimed, ascii);
} catch (Exception e) {
e.printStackTrace();
return null;
Expand All @@ -251,7 +252,7 @@ protected static void printBanner(PrintStream out, String x2) {
out.println("********************************************");
}

private static void printPages(File pageDirectory, DescribeJournal describeJournal, PrintStream out, boolean safe, int maxPages, DescribeJournal bindingsDescribe, boolean legacyOutput) {
private static void printPages(File pageDirectory, DescribeJournal describeJournal, PrintStream out, boolean safe, int maxPages, DescribeJournal bindingsDescribe, boolean ascii) {
ActiveMQThreadFactory daemonFactory = new ActiveMQThreadFactory("cli", true, PrintData.class.getClassLoader());
final ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1, daemonFactory);
final ExecutorService executor = Executors.newFixedThreadPool(10, daemonFactory);
Expand All @@ -264,7 +265,7 @@ private static void printPages(File pageDirectory, DescribeJournal describeJourn
addressSettingsRepository.setDefault(new AddressSettings());
PagingManager manager = new PagingManagerImpl(pageStoreFactory, addressSettingsRepository);

printPages(describeJournal, sm, manager, out, safe, maxPages, bindingsDescribe, legacyOutput);
printPages(describeJournal, sm, manager, out, safe, maxPages, bindingsDescribe, ascii);
} catch (Exception e) {
e.printStackTrace();
} finally {
Expand All @@ -279,7 +280,7 @@ private static void printPages(DescribeJournal describeJournal,
PrintStream out,
boolean safe, int maxPages,
DescribeJournal bindingsDescribe,
boolean legacyOutput) throws Exception {
boolean ascii) throws Exception {
PageCursorsInfo cursorACKs = calculateCursorsInfo(describeJournal.getRecords());

Set<Long> existingQueues = new HashSet<>();
Expand All @@ -294,7 +295,7 @@ private static void printPages(DescribeJournal describeJournal,
SimpleString[] stores = manager.getStoreNames();

int[] pageColumnSizes = {10, 10, 12, safe ? 10 : 100, 10};
TableOut pageTable = legacyOutput ? null : new TableOut("|", 2, pageColumnSizes);
TableOut pageTable = ascii ? null : new TableOut("|", 2, pageColumnSizes);

for (SimpleString store : stores) {
PagingStore pgStore = manager.getPageStore(store);
Expand All @@ -318,7 +319,7 @@ private static void printPages(DescribeJournal describeJournal,
pgid++;
page = pgStore.newPageObject(pgid);
}
if (legacyOutput) {
if (ascii) {
out.println("******* Page " + pgid);
}
page.open(false);
Expand All @@ -328,7 +329,7 @@ private static void printPages(DescribeJournal describeJournal,
int msgID = 0;

if (pageTable != null) {
pageTable.printSeparator(out);
pageTable.printTopSeparator(out);
pageTable.print(out, new String[]{"Page", "Msg", "TX", safe ? "Size" : "Message", "Queues"});
pageTable.printSeparator(out);
}
Expand Down Expand Up @@ -381,7 +382,7 @@ private static void printPages(DescribeJournal describeJournal,
queuesStr.append(", **PG_TX_NOT_FOUND**");
}

if (legacyOutput) {
if (ascii) {
if (safe) {
try {
out.print("pg=" + pgid + ", msg=" + msgID + ",pgTX=" + msg.getTransactionID() + ", msg=" + msg.getMessage().getClass().getSimpleName() + "(safe data, size=" + msg.getMessage().getPersistentSize() + ")");
Expand Down Expand Up @@ -416,8 +417,14 @@ private static void printPages(DescribeJournal describeJournal,
msgID++;

}

pgid++;
}

if (pageTable != null) {
pageTable.printBottomSeparator(out);
}

}
}
}
Expand Down
Loading
Loading