From d2c529cc37f94a1ecd3b03fd91e3e08ee8ee75c9 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Mon, 4 Dec 2023 16:09:00 +0000 Subject: [PATCH] 8319072: JFR: Turn off events for JFR.view Reviewed-by: mgronlun --- .../jdk/jfr/internal/dcmd/AbstractDCmd.java | 14 +++++++++++++- .../classes/jdk/jfr/internal/dcmd/DCmdQuery.java | 5 +++++ .../classes/jdk/jfr/internal/dcmd/DCmdView.java | 5 +++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java index 55d86836dda..21a33481fe8 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java @@ -65,13 +65,15 @@ abstract class AbstractDCmd { // Remember to keep the two sides in synch. public abstract Argument[] getArgumentInfos(); - // Called by native protected abstract void execute(ArgumentParser parser) throws DCmdException; // Called by native public final String[] execute(String source, String arg, char delimiter) throws DCmdException { this.source = source; + if (isInteractive()) { + JVM.exclude(Thread.currentThread()); + } try { boolean log = Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG); if (log) { @@ -92,9 +94,19 @@ abstract class AbstractDCmd { DCmdException e = new DCmdException(iae.getMessage()); e.addSuppressed(iae); throw e; + } finally { + if (isInteractive()) { + JVM.include(Thread.currentThread()); + } } } + // Diagnostic commands that are meant to be used interactively + // should turn off events to avoid noise in the output. + protected boolean isInteractive() { + return false; + } + protected final Output getOutput() { return output; } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdQuery.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdQuery.java index f8e39ea1e2f..e892477bb45 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdQuery.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdQuery.java @@ -71,6 +71,11 @@ public final class DCmdQuery extends AbstractDCmd { } } + @Override + protected final boolean isInteractive() { + return true; + } + private String stripQuotes(String text) { if (text.startsWith("\"")) { text = text.substring(1); diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdView.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdView.java index 0c485262ce1..cc8a381de0b 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdView.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdView.java @@ -83,6 +83,11 @@ public class DCmdView extends AbstractDCmd { } } + @Override + protected final boolean isInteractive() { + return true; + } + @Override public String[] printHelp() { List lines = new ArrayList<>();