8292177: InitialSecurityProperty JFR event
Reviewed-by: mullan
This commit is contained in:
parent
e7a964b4db
commit
8c40b7dc8c
src
java.base/share/classes
jdk.jfr/share
classes/jdk/jfr
conf/jfr
test
jdk
java/security/Security
jdk/jfr/event
lib/jdk/test/lib/jfr
@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
|
||||
import jdk.internal.access.JavaSecurityPropertiesAccess;
|
||||
import jdk.internal.event.EventHelper;
|
||||
import jdk.internal.event.SecurityPropertyModificationEvent;
|
||||
import jdk.internal.access.SharedSecrets;
|
||||
@ -63,6 +64,9 @@ public final class Security {
|
||||
/* The java.security properties */
|
||||
private static Properties props;
|
||||
|
||||
/* cache a copy for recording purposes */
|
||||
private static Properties initialSecurityProperties;
|
||||
|
||||
// An element in the cache
|
||||
private static class ProviderProperty {
|
||||
String className;
|
||||
@ -79,6 +83,13 @@ public final class Security {
|
||||
initialize();
|
||||
return null;
|
||||
});
|
||||
// Set up JavaSecurityPropertiesAccess in SharedSecrets
|
||||
SharedSecrets.setJavaSecurityPropertiesAccess(new JavaSecurityPropertiesAccess() {
|
||||
@Override
|
||||
public Properties getInitialProperties() {
|
||||
return initialSecurityProperties;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void initialize() {
|
||||
@ -104,6 +115,14 @@ public final class Security {
|
||||
}
|
||||
loadProps(null, extraPropFile, overrideAll);
|
||||
}
|
||||
initialSecurityProperties = (Properties) props.clone();
|
||||
if (sdebug != null) {
|
||||
for (String key : props.stringPropertyNames()) {
|
||||
sdebug.println("Initial security property: " + key + "=" +
|
||||
props.getProperty(key));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static boolean loadProps(File masterFile, String extraPropFile, boolean overrideAll) {
|
||||
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package jdk.internal.access;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
public interface JavaSecurityPropertiesAccess {
|
||||
Properties getInitialProperties();
|
||||
}
|
@ -30,6 +30,7 @@ import javax.crypto.spec.SecretKeySpec;
|
||||
import java.io.ObjectInputFilter;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.module.ModuleDescriptor;
|
||||
import java.security.Security;
|
||||
import java.security.spec.EncodedKeySpec;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.concurrent.ForkJoinPool;
|
||||
@ -83,6 +84,7 @@ public class SharedSecrets {
|
||||
private static JavaUtilZipFileAccess javaUtilZipFileAccess;
|
||||
private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
|
||||
private static JavaSecurityAccess javaSecurityAccess;
|
||||
private static JavaSecurityPropertiesAccess javaSecurityPropertiesAccess;
|
||||
private static JavaSecuritySignatureAccess javaSecuritySignatureAccess;
|
||||
private static JavaSecuritySpecAccess javaSecuritySpecAccess;
|
||||
private static JavaxCryptoSealedObjectAccess javaxCryptoSealedObjectAccess;
|
||||
@ -343,6 +345,19 @@ public class SharedSecrets {
|
||||
return access;
|
||||
}
|
||||
|
||||
public static void setJavaSecurityPropertiesAccess(JavaSecurityPropertiesAccess jspa) {
|
||||
javaSecurityPropertiesAccess = jspa;
|
||||
}
|
||||
|
||||
public static JavaSecurityPropertiesAccess getJavaSecurityPropertiesAccess() {
|
||||
var access = javaSecurityPropertiesAccess;
|
||||
if (access == null) {
|
||||
ensureClassInitialized(Security.class);
|
||||
access = javaSecurityPropertiesAccess;
|
||||
}
|
||||
return access;
|
||||
}
|
||||
|
||||
public static JavaUtilZipFileAccess getJavaUtilZipFileAccess() {
|
||||
var access = javaUtilZipFileAccess;
|
||||
if (access == null) {
|
||||
|
@ -165,6 +165,7 @@ module java.base {
|
||||
jdk.charsets,
|
||||
jdk.jartool,
|
||||
jdk.jlink,
|
||||
jdk.jfr,
|
||||
jdk.net;
|
||||
exports jdk.internal.foreign to
|
||||
jdk.incubator.vector;
|
||||
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package jdk.jfr.events;
|
||||
|
||||
import jdk.jfr.Category;
|
||||
import jdk.jfr.Description;
|
||||
import jdk.jfr.Label;
|
||||
import jdk.jfr.Name;
|
||||
|
||||
@Category({"Java Development Kit", "Security"})
|
||||
@Label("Initial Security Property")
|
||||
@Name("jdk.InitialSecurityProperty")
|
||||
@Description("Initial Security Properties")
|
||||
public final class InitialSecurityPropertyEvent extends AbstractJDKEvent {
|
||||
@Label("Key")
|
||||
public String key;
|
||||
|
||||
@Label("Value")
|
||||
public String value;
|
||||
}
|
@ -27,7 +27,9 @@ package jdk.jfr.internal.instrument;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import jdk.internal.access.SharedSecrets;
|
||||
import jdk.jfr.Event;
|
||||
import jdk.jfr.events.ActiveRecordingEvent;
|
||||
import jdk.jfr.events.ActiveSettingEvent;
|
||||
@ -44,6 +46,7 @@ import jdk.jfr.events.FileForceEvent;
|
||||
import jdk.jfr.events.FileReadEvent;
|
||||
import jdk.jfr.events.FileWriteEvent;
|
||||
import jdk.jfr.events.DeserializationEvent;
|
||||
import jdk.jfr.events.InitialSecurityPropertyEvent;
|
||||
import jdk.jfr.events.ProcessStartEvent;
|
||||
import jdk.jfr.events.SecurityPropertyModificationEvent;
|
||||
import jdk.jfr.events.SecurityProviderServiceEvent;
|
||||
@ -107,7 +110,8 @@ public final class JDKEvents {
|
||||
jdk.internal.event.X509CertificateEvent.class,
|
||||
jdk.internal.event.X509ValidationEvent.class,
|
||||
|
||||
DirectBufferStatisticsEvent.class
|
||||
DirectBufferStatisticsEvent.class,
|
||||
InitialSecurityPropertyEvent.class,
|
||||
};
|
||||
|
||||
// This is a list of the classes with instrumentation code that should be applied.
|
||||
@ -130,6 +134,7 @@ public final class JDKEvents {
|
||||
private static final Runnable emitContainerCPUThrottling = JDKEvents::emitContainerCPUThrottling;
|
||||
private static final Runnable emitContainerMemoryUsage = JDKEvents::emitContainerMemoryUsage;
|
||||
private static final Runnable emitContainerIOUsage = JDKEvents::emitContainerIOUsage;
|
||||
private static final Runnable emitInitialSecurityProperties = JDKEvents::emitInitialSecurityProperties;
|
||||
private static Metrics containerMetrics = null;
|
||||
private static boolean initializationTriggered;
|
||||
|
||||
@ -146,6 +151,7 @@ public final class JDKEvents {
|
||||
|
||||
RequestEngine.addTrustedJDKHook(ExceptionStatisticsEvent.class, emitExceptionStatistics);
|
||||
RequestEngine.addTrustedJDKHook(DirectBufferStatisticsEvent.class, emitDirectBufferStatistics);
|
||||
RequestEngine.addTrustedJDKHook(InitialSecurityPropertyEvent.class, emitInitialSecurityProperties);
|
||||
|
||||
initializeContainerEvents();
|
||||
initializationTriggered = true;
|
||||
@ -288,6 +294,7 @@ public final class JDKEvents {
|
||||
public static void remove() {
|
||||
RequestEngine.removeHook(emitExceptionStatistics);
|
||||
RequestEngine.removeHook(emitDirectBufferStatistics);
|
||||
RequestEngine.removeHook(emitInitialSecurityProperties);
|
||||
|
||||
RequestEngine.removeHook(emitContainerConfiguration);
|
||||
RequestEngine.removeHook(emitContainerCPUUsage);
|
||||
@ -300,4 +307,16 @@ public final class JDKEvents {
|
||||
DirectBufferStatisticsEvent e = new DirectBufferStatisticsEvent();
|
||||
e.commit();
|
||||
}
|
||||
|
||||
private static void emitInitialSecurityProperties() {
|
||||
Properties p = SharedSecrets.getJavaSecurityPropertiesAccess().getInitialProperties();
|
||||
if (p != null) {
|
||||
for (String key : p.stringPropertyNames()) {
|
||||
InitialSecurityPropertyEvent e = new InitialSecurityPropertyEvent();
|
||||
e.key = key;
|
||||
e.value = p.getProperty(key);
|
||||
e.commit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -709,6 +709,11 @@
|
||||
<setting name="stackTrace">true</setting>
|
||||
</event>
|
||||
|
||||
<event name="jdk.InitialSecurityProperty">
|
||||
<setting name="enabled">true</setting>
|
||||
<setting name="period">beginChunk</setting>
|
||||
</event>
|
||||
|
||||
<event name="jdk.SecurityPropertyModification">
|
||||
<setting name="enabled">false</setting>
|
||||
<setting name="stackTrace">true</setting>
|
||||
|
@ -709,6 +709,11 @@
|
||||
<setting name="stackTrace">true</setting>
|
||||
</event>
|
||||
|
||||
<event name="jdk.InitialSecurityProperty">
|
||||
<setting name="enabled">true</setting>
|
||||
<setting name="period">beginChunk</setting>
|
||||
</event>
|
||||
|
||||
<event name="jdk.SecurityPropertyModification">
|
||||
<setting name="enabled">false</setting>
|
||||
<setting name="stackTrace">true</setting>
|
||||
|
@ -36,12 +36,20 @@ import java.util.Optional;
|
||||
/*
|
||||
* @test
|
||||
* @summary Throw error if default java.security file is missing
|
||||
* @bug 8155246 8292297
|
||||
* @bug 8155246 8292297 8292177
|
||||
* @library /test/lib
|
||||
* @run main ConfigFileTest
|
||||
*/
|
||||
public class ConfigFileTest {
|
||||
|
||||
private static final String EXPECTED_DEBUG_OUTPUT =
|
||||
"Initial security property: crypto.policy=unlimited";
|
||||
|
||||
private static final String UNEXPECTED_DEBUG_OUTPUT =
|
||||
"Initial security property: postInitTest=shouldNotRecord";
|
||||
|
||||
private static boolean overrideDetected = false;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
Path copyJdkDir = Path.of("./jdk-8155246-tmpdir");
|
||||
Path copiedJava = Optional.of(
|
||||
@ -52,6 +60,7 @@ public class ConfigFileTest {
|
||||
if (args.length == 1) {
|
||||
// set up is complete. Run code to exercise loading of java.security
|
||||
Provider[] provs = Security.getProviders();
|
||||
Security.setProperty("postInitTest", "shouldNotRecord");
|
||||
System.out.println(Arrays.toString(provs) + "NumProviders: " + provs.length);
|
||||
} else {
|
||||
Files.createDirectory(copyJdkDir);
|
||||
@ -99,13 +108,32 @@ public class ConfigFileTest {
|
||||
copiedJava.toString(), "-cp", System.getProperty("test.classes"),
|
||||
"-Djava.security.debug=all", "-Djavax.net.debug=all",
|
||||
"-Djava.security.properties==file:///" + extraPropsFile, "ConfigFileTest", "runner");
|
||||
|
||||
if (!overrideDetected) {
|
||||
throw new RuntimeException("Override scenario not seen");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void exerciseSecurity(int exitCode, String output, String... args) throws Exception {
|
||||
ProcessBuilder process = new ProcessBuilder(args);
|
||||
OutputAnalyzer oa = ProcessTools.executeProcess(process);
|
||||
oa.shouldHaveExitValue(exitCode).shouldContain(output);
|
||||
oa.shouldHaveExitValue(exitCode)
|
||||
.shouldContain(output);
|
||||
|
||||
// extra checks on debug output
|
||||
if (exitCode != 1) {
|
||||
if (oa.getStderr().contains("overriding other security properties files!")) {
|
||||
overrideDetected = true;
|
||||
// master file is not in use - only provider properties are set in custom file
|
||||
oa.shouldContain("security.provider.2=SunRsaSign")
|
||||
.shouldNotContain(EXPECTED_DEBUG_OUTPUT)
|
||||
.shouldNotContain(UNEXPECTED_DEBUG_OUTPUT);
|
||||
} else {
|
||||
oa.shouldContain(EXPECTED_DEBUG_OUTPUT)
|
||||
.shouldNotContain(UNEXPECTED_DEBUG_OUTPUT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void copyJDK(Path src, Path dst) throws Exception {
|
||||
|
@ -252,6 +252,7 @@ public final class TestActiveSettingEvent {
|
||||
settingValues.put(EventNames.ActiveSetting + "#threshold", "0 ns");
|
||||
settingValues.put(EventNames.ActiveRecording + "#stackTrace", "false");
|
||||
settingValues.put(EventNames.ActiveRecording + "#threshold", "0 ns");
|
||||
settingValues.put(EventNames.InitialSecurityProperty + "#threshold", "0 ns");
|
||||
settingValues.put(EventNames.JavaExceptionThrow + "#threshold", "0 ns");
|
||||
settingValues.put(EventNames.JavaErrorThrow + "#threshold", "0 ns");
|
||||
settingValues.put(EventNames.SecurityProperty + "#threshold", "0 ns");
|
||||
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package jdk.jfr.event.security;
|
||||
|
||||
import jdk.internal.access.SharedSecrets;
|
||||
import jdk.jfr.Recording;
|
||||
import jdk.jfr.consumer.RecordedEvent;
|
||||
import jdk.test.lib.Asserts;
|
||||
import jdk.test.lib.jfr.EventNames;
|
||||
import jdk.test.lib.jfr.Events;
|
||||
|
||||
import java.security.Security;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8292177
|
||||
* @summary InitialSecurityProperty JFR event
|
||||
* @key jfr
|
||||
* @requires vm.hasJFR
|
||||
* @library /test/lib
|
||||
* @modules java.base/jdk.internal.access
|
||||
* @run main/othervm jdk.jfr.event.security.TestInitialSecurityPropertyEvent
|
||||
*/
|
||||
public class TestInitialSecurityPropertyEvent {
|
||||
|
||||
private static final String SEC_KEY = "security.overridePropertiesFile";
|
||||
public static void main(String[] args) throws Exception {
|
||||
try (Recording recording = new Recording()) {
|
||||
recording.enable(EventNames.InitialSecurityProperty)
|
||||
.with("period", "beginChunk");
|
||||
recording.start();
|
||||
// this property edit should not be recorded
|
||||
Security.setProperty(SEC_KEY, "false");
|
||||
recording.stop();
|
||||
|
||||
Properties p = SharedSecrets.getJavaSecurityPropertiesAccess().getInitialProperties();
|
||||
List<RecordedEvent> events = Events.fromRecording(recording);
|
||||
if (events.size() == 0) {
|
||||
throw new Exception("No security properties - Security class may not have loaded ?");
|
||||
}
|
||||
Asserts.assertEquals(events.size(), p.size(), "Incorrect number of events");
|
||||
assertEvent(events, SEC_KEY, "true");
|
||||
}
|
||||
}
|
||||
|
||||
private static void assertEvent(List<RecordedEvent> events, String key, String origValue) throws Exception {
|
||||
for (RecordedEvent e : events) {
|
||||
if (e.getString("key").equals(key)) {
|
||||
Events.assertField(e, "value").equal(origValue);
|
||||
return;
|
||||
}
|
||||
}
|
||||
System.out.println(events);
|
||||
throw new Exception("Incorrect value for " + key + " property recorded");
|
||||
}
|
||||
}
|
@ -32,150 +32,150 @@ import jdk.jfr.EventType;
|
||||
*/
|
||||
public class EventNames {
|
||||
|
||||
public final static String PREFIX = "jdk.";
|
||||
public static final String PREFIX = "jdk.";
|
||||
private static final String GC_CATEGORY = "GC";
|
||||
|
||||
// JVM Configuration
|
||||
public final static String JVMInformation = PREFIX + "JVMInformation";
|
||||
public final static String InitialSystemProperty = PREFIX + "InitialSystemProperty";
|
||||
public final static String IntFlag = PREFIX + "IntFlag";
|
||||
public final static String UnsignedIntFlag = PREFIX + "UnsignedIntFlag";
|
||||
public final static String LongFlag = PREFIX + "LongFlag";
|
||||
public final static String UnsignedLongFlag = PREFIX + "UnsignedLongFlag";
|
||||
public final static String DoubleFlag = PREFIX + "DoubleFlag";
|
||||
public final static String BooleanFlag = PREFIX + "BooleanFlag";
|
||||
public final static String StringFlag = PREFIX + "StringFlag";
|
||||
public final static String IntFlagChanged = PREFIX + "IntFlagChanged";
|
||||
public final static String UnsignedIntFlagChanged = PREFIX + "UnsignedIntFlagChanged";
|
||||
public final static String LongFlagChanged = PREFIX + "LongFlagChanged";
|
||||
public final static String UnsignedLongFlagChanged = PREFIX + "UnsignedLongFlagChanged";
|
||||
public final static String DoubleFlagChanged = PREFIX + "DoubleFlagChanged";
|
||||
public final static String BooleanFlagChanged = PREFIX + "BooleanFlagChanged";
|
||||
public final static String StringFlagChanged = PREFIX + "StringFlagChanged";
|
||||
public static final String JVMInformation = PREFIX + "JVMInformation";
|
||||
public static final String InitialSystemProperty = PREFIX + "InitialSystemProperty";
|
||||
public static final String IntFlag = PREFIX + "IntFlag";
|
||||
public static final String UnsignedIntFlag = PREFIX + "UnsignedIntFlag";
|
||||
public static final String LongFlag = PREFIX + "LongFlag";
|
||||
public static final String UnsignedLongFlag = PREFIX + "UnsignedLongFlag";
|
||||
public static final String DoubleFlag = PREFIX + "DoubleFlag";
|
||||
public static final String BooleanFlag = PREFIX + "BooleanFlag";
|
||||
public static final String StringFlag = PREFIX + "StringFlag";
|
||||
public static final String IntFlagChanged = PREFIX + "IntFlagChanged";
|
||||
public static final String UnsignedIntFlagChanged = PREFIX + "UnsignedIntFlagChanged";
|
||||
public static final String LongFlagChanged = PREFIX + "LongFlagChanged";
|
||||
public static final String UnsignedLongFlagChanged = PREFIX + "UnsignedLongFlagChanged";
|
||||
public static final String DoubleFlagChanged = PREFIX + "DoubleFlagChanged";
|
||||
public static final String BooleanFlagChanged = PREFIX + "BooleanFlagChanged";
|
||||
public static final String StringFlagChanged = PREFIX + "StringFlagChanged";
|
||||
|
||||
// Runtime
|
||||
public final static String ThreadStart = PREFIX + "ThreadStart";
|
||||
public final static String ThreadEnd = PREFIX + "ThreadEnd";
|
||||
public final static String ThreadSleep = PREFIX + "ThreadSleep";
|
||||
public final static String ThreadPark = PREFIX + "ThreadPark";
|
||||
public final static String JavaMonitorEnter = PREFIX + "JavaMonitorEnter";
|
||||
public final static String JavaMonitorWait = PREFIX + "JavaMonitorWait";
|
||||
public final static String JavaMonitorInflate = PREFIX + "JavaMonitorInflate";
|
||||
public final static String SyncOnValueBasedClass = PREFIX + "SyncOnValueBasedClass";
|
||||
public final static String ClassLoad = PREFIX + "ClassLoad";
|
||||
public final static String ClassDefine = PREFIX + "ClassDefine";
|
||||
public final static String ClassUnload = PREFIX + "ClassUnload";
|
||||
public final static String SafepointBegin = PREFIX + "SafepointBegin";
|
||||
public final static String SafepointStateSynchronization = PREFIX + "SafepointStateSynchronization";
|
||||
public final static String SafepointCleanup = PREFIX + "SafepointCleanup";
|
||||
public final static String SafepointCleanupTask = PREFIX + "SafepointCleanupTask";
|
||||
public final static String SafepointEnd = PREFIX + "SafepointEnd";
|
||||
public final static String ExecuteVMOperation = PREFIX + "ExecuteVMOperation";
|
||||
public final static String Shutdown = PREFIX + "Shutdown";
|
||||
public final static String JavaThreadStatistics = PREFIX + "JavaThreadStatistics";
|
||||
public final static String ClassLoadingStatistics = PREFIX + "ClassLoadingStatistics";
|
||||
public final static String ClassLoaderStatistics = PREFIX + "ClassLoaderStatistics";
|
||||
public final static String ThreadAllocationStatistics = PREFIX + "ThreadAllocationStatistics";
|
||||
public final static String ExecutionSample = PREFIX + "ExecutionSample";
|
||||
public final static String NativeMethodSample = PREFIX + "NativeMethodSample";
|
||||
public final static String ThreadDump = PREFIX + "ThreadDump";
|
||||
public final static String OldObjectSample = PREFIX + "OldObjectSample";
|
||||
public final static String SymbolTableStatistics = PREFIX + "SymbolTableStatistics";
|
||||
public final static String StringTableStatistics = PREFIX + "StringTableStatistics";
|
||||
public static final String ThreadStart = PREFIX + "ThreadStart";
|
||||
public static final String ThreadEnd = PREFIX + "ThreadEnd";
|
||||
public static final String ThreadSleep = PREFIX + "ThreadSleep";
|
||||
public static final String ThreadPark = PREFIX + "ThreadPark";
|
||||
public static final String JavaMonitorEnter = PREFIX + "JavaMonitorEnter";
|
||||
public static final String JavaMonitorWait = PREFIX + "JavaMonitorWait";
|
||||
public static final String JavaMonitorInflate = PREFIX + "JavaMonitorInflate";
|
||||
public static final String SyncOnValueBasedClass = PREFIX + "SyncOnValueBasedClass";
|
||||
public static final String ClassLoad = PREFIX + "ClassLoad";
|
||||
public static final String ClassDefine = PREFIX + "ClassDefine";
|
||||
public static final String ClassUnload = PREFIX + "ClassUnload";
|
||||
public static final String SafepointBegin = PREFIX + "SafepointBegin";
|
||||
public static final String SafepointStateSynchronization = PREFIX + "SafepointStateSynchronization";
|
||||
public static final String SafepointCleanup = PREFIX + "SafepointCleanup";
|
||||
public static final String SafepointCleanupTask = PREFIX + "SafepointCleanupTask";
|
||||
public static final String SafepointEnd = PREFIX + "SafepointEnd";
|
||||
public static final String ExecuteVMOperation = PREFIX + "ExecuteVMOperation";
|
||||
public static final String Shutdown = PREFIX + "Shutdown";
|
||||
public static final String JavaThreadStatistics = PREFIX + "JavaThreadStatistics";
|
||||
public static final String ClassLoadingStatistics = PREFIX + "ClassLoadingStatistics";
|
||||
public static final String ClassLoaderStatistics = PREFIX + "ClassLoaderStatistics";
|
||||
public static final String ThreadAllocationStatistics = PREFIX + "ThreadAllocationStatistics";
|
||||
public static final String ExecutionSample = PREFIX + "ExecutionSample";
|
||||
public static final String NativeMethodSample = PREFIX + "NativeMethodSample";
|
||||
public static final String ThreadDump = PREFIX + "ThreadDump";
|
||||
public static final String OldObjectSample = PREFIX + "OldObjectSample";
|
||||
public static final String SymbolTableStatistics = PREFIX + "SymbolTableStatistics";
|
||||
public static final String StringTableStatistics = PREFIX + "StringTableStatistics";
|
||||
public static final String RedefineClasses = PREFIX + "RedefineClasses";
|
||||
public static final String RetransformClasses = PREFIX + "RetransformClasses";
|
||||
public static final String ClassRedefinition = PREFIX + "ClassRedefinition";
|
||||
public static final String FinalizerStatistics = PREFIX + "FinalizerStatistics";
|
||||
|
||||
// This event is hard to test
|
||||
public final static String ReservedStackActivation = PREFIX + "ReservedStackActivation";
|
||||
public static final String ReservedStackActivation = PREFIX + "ReservedStackActivation";
|
||||
|
||||
// GC
|
||||
public final static String GCHeapSummary = PREFIX + "GCHeapSummary";
|
||||
public final static String MetaspaceSummary = PREFIX + "MetaspaceSummary";
|
||||
public final static String MetaspaceGCThreshold = PREFIX + "MetaspaceGCThreshold";
|
||||
public final static String MetaspaceAllocationFailure = PREFIX + "MetaspaceAllocationFailure";
|
||||
public final static String MetaspaceOOM = PREFIX + "MetaspaceOOM";
|
||||
public final static String MetaspaceChunkFreeListSummary = PREFIX + "MetaspaceChunkFreeListSummary";
|
||||
public final static String PSHeapSummary = PREFIX + "PSHeapSummary";
|
||||
public final static String G1HeapSummary = PREFIX + "G1HeapSummary";
|
||||
public final static String G1HeapRegionInformation = PREFIX + "G1HeapRegionInformation";
|
||||
public final static String G1HeapRegionTypeChange = PREFIX + "G1HeapRegionTypeChange";
|
||||
public final static String ShenandoahHeapRegionInformation = PREFIX + "ShenandoahHeapRegionInformation";
|
||||
public final static String ShenandoahHeapRegionStateChange = PREFIX + "ShenandoahHeapRegionStateChange";
|
||||
public final static String TenuringDistribution = PREFIX + "TenuringDistribution";
|
||||
public final static String GarbageCollection = PREFIX + "GarbageCollection";
|
||||
public final static String ParallelOldGarbageCollection = PREFIX + "ParallelOldGarbageCollection";
|
||||
public final static String ParallelOldCollection = ParallelOldGarbageCollection;
|
||||
public final static String YoungGarbageCollection = PREFIX + "YoungGarbageCollection";
|
||||
public final static String OldGarbageCollection = PREFIX + "OldGarbageCollection";
|
||||
public final static String G1GarbageCollection = PREFIX + "G1GarbageCollection";
|
||||
public final static String G1MMU = PREFIX + "G1MMU";
|
||||
public final static String EvacuationInformation = PREFIX + "EvacuationInformation";
|
||||
public final static String GCReferenceStatistics = PREFIX + "GCReferenceStatistics";
|
||||
public final static String ObjectCountAfterGC = PREFIX + "ObjectCountAfterGC";
|
||||
public final static String PromoteObjectInNewPLAB = PREFIX + "PromoteObjectInNewPLAB";
|
||||
public final static String PromoteObjectOutsidePLAB = PREFIX + "PromoteObjectOutsidePLAB";
|
||||
public final static String PromotionFailed = PREFIX + "PromotionFailed";
|
||||
public final static String EvacuationFailed = PREFIX + "EvacuationFailed";
|
||||
public final static String ConcurrentModeFailure = PREFIX + "ConcurrentModeFailure";
|
||||
public final static String GCPhasePause = PREFIX + "GCPhasePause";
|
||||
public final static String GCPhasePauseLevel1 = PREFIX + "GCPhasePauseLevel1";
|
||||
public final static String GCPhasePauseLevel2 = PREFIX + "GCPhasePauseLevel2";
|
||||
public final static String GCPhasePauseLevel3 = PREFIX + "GCPhasePauseLevel3";
|
||||
public final static String GCPhasePauseLevel4 = PREFIX + "GCPhasePauseLevel4";
|
||||
public final static String ObjectCount = PREFIX + "ObjectCount";
|
||||
public final static String GCConfiguration = PREFIX + "GCConfiguration";
|
||||
public final static String GCSurvivorConfiguration = PREFIX + "GCSurvivorConfiguration";
|
||||
public final static String GCTLABConfiguration = PREFIX + "GCTLABConfiguration";
|
||||
public final static String GCHeapConfiguration = PREFIX + "GCHeapConfiguration";
|
||||
public final static String YoungGenerationConfiguration = PREFIX + "YoungGenerationConfiguration";
|
||||
public final static String G1AdaptiveIHOP = PREFIX + "G1AdaptiveIHOP";
|
||||
public final static String G1EvacuationYoungStatistics = PREFIX + "G1EvacuationYoungStatistics";
|
||||
public final static String G1EvacuationOldStatistics = PREFIX + "G1EvacuationOldStatistics";
|
||||
public final static String G1BasicIHOP = PREFIX + "G1BasicIHOP";
|
||||
public final static String AllocationRequiringGC = PREFIX + "AllocationRequiringGC";
|
||||
public final static String GCPhaseParallel = PREFIX + "GCPhaseParallel";
|
||||
public final static String GCPhaseConcurrent = PREFIX + "GCPhaseConcurrent";
|
||||
public final static String GCPhaseConcurrentLevel1 = PREFIX + "GCPhaseConcurrentLevel1";
|
||||
public final static String ZAllocationStall = PREFIX + "ZAllocationStall";
|
||||
public final static String ZPageAllocation = PREFIX + "ZPageAllocation";
|
||||
public final static String ZRelocationSet = PREFIX + "ZRelocationSet";
|
||||
public final static String ZRelocationSetGroup = PREFIX + "ZRelocationSetGroup";
|
||||
public final static String ZUncommit = PREFIX + "ZUncommit";
|
||||
public final static String ZUnmap = PREFIX + "ZUnmap";
|
||||
public final static String GCLocker = PREFIX + "GCLocker";
|
||||
public static final String GCHeapSummary = PREFIX + "GCHeapSummary";
|
||||
public static final String MetaspaceSummary = PREFIX + "MetaspaceSummary";
|
||||
public static final String MetaspaceGCThreshold = PREFIX + "MetaspaceGCThreshold";
|
||||
public static final String MetaspaceAllocationFailure = PREFIX + "MetaspaceAllocationFailure";
|
||||
public static final String MetaspaceOOM = PREFIX + "MetaspaceOOM";
|
||||
public static final String MetaspaceChunkFreeListSummary = PREFIX + "MetaspaceChunkFreeListSummary";
|
||||
public static final String PSHeapSummary = PREFIX + "PSHeapSummary";
|
||||
public static final String G1HeapSummary = PREFIX + "G1HeapSummary";
|
||||
public static final String G1HeapRegionInformation = PREFIX + "G1HeapRegionInformation";
|
||||
public static final String G1HeapRegionTypeChange = PREFIX + "G1HeapRegionTypeChange";
|
||||
public static final String ShenandoahHeapRegionInformation = PREFIX + "ShenandoahHeapRegionInformation";
|
||||
public static final String ShenandoahHeapRegionStateChange = PREFIX + "ShenandoahHeapRegionStateChange";
|
||||
public static final String TenuringDistribution = PREFIX + "TenuringDistribution";
|
||||
public static final String GarbageCollection = PREFIX + "GarbageCollection";
|
||||
public static final String ParallelOldGarbageCollection = PREFIX + "ParallelOldGarbageCollection";
|
||||
public static final String ParallelOldCollection = ParallelOldGarbageCollection;
|
||||
public static final String YoungGarbageCollection = PREFIX + "YoungGarbageCollection";
|
||||
public static final String OldGarbageCollection = PREFIX + "OldGarbageCollection";
|
||||
public static final String G1GarbageCollection = PREFIX + "G1GarbageCollection";
|
||||
public static final String G1MMU = PREFIX + "G1MMU";
|
||||
public static final String EvacuationInformation = PREFIX + "EvacuationInformation";
|
||||
public static final String GCReferenceStatistics = PREFIX + "GCReferenceStatistics";
|
||||
public static final String ObjectCountAfterGC = PREFIX + "ObjectCountAfterGC";
|
||||
public static final String PromoteObjectInNewPLAB = PREFIX + "PromoteObjectInNewPLAB";
|
||||
public static final String PromoteObjectOutsidePLAB = PREFIX + "PromoteObjectOutsidePLAB";
|
||||
public static final String PromotionFailed = PREFIX + "PromotionFailed";
|
||||
public static final String EvacuationFailed = PREFIX + "EvacuationFailed";
|
||||
public static final String ConcurrentModeFailure = PREFIX + "ConcurrentModeFailure";
|
||||
public static final String GCPhasePause = PREFIX + "GCPhasePause";
|
||||
public static final String GCPhasePauseLevel1 = PREFIX + "GCPhasePauseLevel1";
|
||||
public static final String GCPhasePauseLevel2 = PREFIX + "GCPhasePauseLevel2";
|
||||
public static final String GCPhasePauseLevel3 = PREFIX + "GCPhasePauseLevel3";
|
||||
public static final String GCPhasePauseLevel4 = PREFIX + "GCPhasePauseLevel4";
|
||||
public static final String ObjectCount = PREFIX + "ObjectCount";
|
||||
public static final String GCConfiguration = PREFIX + "GCConfiguration";
|
||||
public static final String GCSurvivorConfiguration = PREFIX + "GCSurvivorConfiguration";
|
||||
public static final String GCTLABConfiguration = PREFIX + "GCTLABConfiguration";
|
||||
public static final String GCHeapConfiguration = PREFIX + "GCHeapConfiguration";
|
||||
public static final String YoungGenerationConfiguration = PREFIX + "YoungGenerationConfiguration";
|
||||
public static final String G1AdaptiveIHOP = PREFIX + "G1AdaptiveIHOP";
|
||||
public static final String G1EvacuationYoungStatistics = PREFIX + "G1EvacuationYoungStatistics";
|
||||
public static final String G1EvacuationOldStatistics = PREFIX + "G1EvacuationOldStatistics";
|
||||
public static final String G1BasicIHOP = PREFIX + "G1BasicIHOP";
|
||||
public static final String AllocationRequiringGC = PREFIX + "AllocationRequiringGC";
|
||||
public static final String GCPhaseParallel = PREFIX + "GCPhaseParallel";
|
||||
public static final String GCPhaseConcurrent = PREFIX + "GCPhaseConcurrent";
|
||||
public static final String GCPhaseConcurrentLevel1 = PREFIX + "GCPhaseConcurrentLevel1";
|
||||
public static final String ZAllocationStall = PREFIX + "ZAllocationStall";
|
||||
public static final String ZPageAllocation = PREFIX + "ZPageAllocation";
|
||||
public static final String ZRelocationSet = PREFIX + "ZRelocationSet";
|
||||
public static final String ZRelocationSetGroup = PREFIX + "ZRelocationSetGroup";
|
||||
public static final String ZUncommit = PREFIX + "ZUncommit";
|
||||
public static final String ZUnmap = PREFIX + "ZUnmap";
|
||||
public static final String GCLocker = PREFIX + "GCLocker";
|
||||
public static final String SystemGC = PREFIX + "SystemGC";
|
||||
public static final String GCCPUTime = PREFIX + "GCCPUTime";
|
||||
|
||||
// Compiler
|
||||
public final static String Compilation = PREFIX + "Compilation";
|
||||
public final static String CompilerPhase = PREFIX + "CompilerPhase";
|
||||
public final static String CompilationFailure = PREFIX + "CompilationFailure";
|
||||
public final static String CompilerInlining = PREFIX + "CompilerInlining";
|
||||
public final static String CompilerStatistics = PREFIX + "CompilerStatistics";
|
||||
public final static String CompilerConfiguration = PREFIX + "CompilerConfiguration";
|
||||
public final static String CodeCacheStatistics = PREFIX + "CodeCacheStatistics";
|
||||
public final static String CodeCacheConfiguration = PREFIX + "CodeCacheConfiguration";
|
||||
public final static String CodeCacheFull = PREFIX + "CodeCacheFull";
|
||||
public final static String ObjectAllocationInNewTLAB = PREFIX + "ObjectAllocationInNewTLAB";
|
||||
public final static String ObjectAllocationOutsideTLAB = PREFIX + "ObjectAllocationOutsideTLAB";
|
||||
public final static String ObjectAllocationSample = PREFIX + "ObjectAllocationSample";
|
||||
public final static String Deoptimization = PREFIX + "Deoptimization";
|
||||
public final static String JitRestart = PREFIX + "JitRestart";
|
||||
public static final String Compilation = PREFIX + "Compilation";
|
||||
public static final String CompilerPhase = PREFIX + "CompilerPhase";
|
||||
public static final String CompilationFailure = PREFIX + "CompilationFailure";
|
||||
public static final String CompilerInlining = PREFIX + "CompilerInlining";
|
||||
public static final String CompilerStatistics = PREFIX + "CompilerStatistics";
|
||||
public static final String CompilerConfiguration = PREFIX + "CompilerConfiguration";
|
||||
public static final String CodeCacheStatistics = PREFIX + "CodeCacheStatistics";
|
||||
public static final String CodeCacheConfiguration = PREFIX + "CodeCacheConfiguration";
|
||||
public static final String CodeCacheFull = PREFIX + "CodeCacheFull";
|
||||
public static final String ObjectAllocationInNewTLAB = PREFIX + "ObjectAllocationInNewTLAB";
|
||||
public static final String ObjectAllocationOutsideTLAB = PREFIX + "ObjectAllocationOutsideTLAB";
|
||||
public static final String ObjectAllocationSample = PREFIX + "ObjectAllocationSample";
|
||||
public static final String Deoptimization = PREFIX + "Deoptimization";
|
||||
public static final String JitRestart = PREFIX + "JitRestart";
|
||||
|
||||
// OS
|
||||
public final static String OSInformation = PREFIX + "OSInformation";
|
||||
public final static String VirtualizationInformation = PREFIX + "VirtualizationInformation";
|
||||
public final static String CPUInformation = PREFIX + "CPUInformation";
|
||||
public final static String CPULoad = PREFIX + "CPULoad";
|
||||
public final static String ThreadCPULoad = PREFIX + "ThreadCPULoad";
|
||||
public final static String SystemProcess = PREFIX + "SystemProcess";
|
||||
public final static String ThreadContextSwitchRate = PREFIX + "ThreadContextSwitchRate";
|
||||
public final static String InitialEnvironmentVariable = PREFIX + "InitialEnvironmentVariable";
|
||||
public final static String NativeLibrary = PREFIX + "NativeLibrary";
|
||||
public final static String PhysicalMemory = PREFIX + "PhysicalMemory";
|
||||
public final static String NetworkUtilization = PREFIX + "NetworkUtilization";
|
||||
public static final String OSInformation = PREFIX + "OSInformation";
|
||||
public static final String VirtualizationInformation = PREFIX + "VirtualizationInformation";
|
||||
public static final String CPUInformation = PREFIX + "CPUInformation";
|
||||
public static final String CPULoad = PREFIX + "CPULoad";
|
||||
public static final String ThreadCPULoad = PREFIX + "ThreadCPULoad";
|
||||
public static final String SystemProcess = PREFIX + "SystemProcess";
|
||||
public static final String ThreadContextSwitchRate = PREFIX + "ThreadContextSwitchRate";
|
||||
public static final String InitialEnvironmentVariable = PREFIX + "InitialEnvironmentVariable";
|
||||
public static final String NativeLibrary = PREFIX + "NativeLibrary";
|
||||
public static final String PhysicalMemory = PREFIX + "PhysicalMemory";
|
||||
public static final String NetworkUtilization = PREFIX + "NetworkUtilization";
|
||||
public static final String ProcessStart = PREFIX + "ProcessStart";
|
||||
|
||||
// JDK
|
||||
@ -184,18 +184,19 @@ public class EventNames {
|
||||
public static final String FileWrite = PREFIX + "FileWrite";
|
||||
public static final String SocketRead = PREFIX + "SocketRead";
|
||||
public static final String SocketWrite = PREFIX + "SocketWrite";
|
||||
public final static String ExceptionStatistics = PREFIX + "ExceptionStatistics";
|
||||
public final static String JavaExceptionThrow = PREFIX + "JavaExceptionThrow";
|
||||
public final static String JavaErrorThrow = PREFIX + "JavaErrorThrow";
|
||||
public final static String ModuleRequire = PREFIX + "ModuleRequire";
|
||||
public final static String ModuleExport = PREFIX + "ModuleExport";
|
||||
public final static String TLSHandshake = PREFIX + "TLSHandshake";
|
||||
public final static String X509Certificate = PREFIX + "X509Certificate";
|
||||
public final static String X509Validation = PREFIX + "X509Validation";
|
||||
public final static String SecurityProperty = PREFIX + "SecurityPropertyModification";
|
||||
public final static String SecurityProviderService = PREFIX + "SecurityProviderService";
|
||||
public final static String DirectBufferStatistics = PREFIX + "DirectBufferStatistics";
|
||||
public final static String Deserialization = PREFIX + "Deserialization";
|
||||
public static final String ExceptionStatistics = PREFIX + "ExceptionStatistics";
|
||||
public static final String JavaExceptionThrow = PREFIX + "JavaExceptionThrow";
|
||||
public static final String JavaErrorThrow = PREFIX + "JavaErrorThrow";
|
||||
public static final String ModuleRequire = PREFIX + "ModuleRequire";
|
||||
public static final String ModuleExport = PREFIX + "ModuleExport";
|
||||
public static final String TLSHandshake = PREFIX + "TLSHandshake";
|
||||
public static final String X509Certificate = PREFIX + "X509Certificate";
|
||||
public static final String X509Validation = PREFIX + "X509Validation";
|
||||
public static final String InitialSecurityProperty = PREFIX + "InitialSecurityProperty";
|
||||
public static final String SecurityProperty = PREFIX + "SecurityPropertyModification";
|
||||
public static final String SecurityProviderService = PREFIX + "SecurityProviderService";
|
||||
public static final String DirectBufferStatistics = PREFIX + "DirectBufferStatistics";
|
||||
public static final String Deserialization = PREFIX + "Deserialization";
|
||||
public static final String VirtualThreadStart = PREFIX + "VirtualThreadStart";
|
||||
public static final String VirtualThreadEnd = PREFIX + "VirtualThreadEnd";
|
||||
public static final String VirtualThreadPinned = PREFIX + "VirtualThreadPinned";
|
||||
@ -209,11 +210,11 @@ public class EventNames {
|
||||
public static final String ContainerIOUsage = PREFIX + "ContainerIOUsage";
|
||||
|
||||
// Flight Recorder
|
||||
public final static String DumpReason = PREFIX + "DumpReason";
|
||||
public final static String DataLoss = PREFIX + "DataLoss";
|
||||
public final static String CPUTimeStampCounter = PREFIX + "CPUTimeStampCounter";
|
||||
public final static String ActiveRecording = PREFIX + "ActiveRecording";
|
||||
public final static String ActiveSetting = PREFIX + "ActiveSetting";
|
||||
public static final String DumpReason = PREFIX + "DumpReason";
|
||||
public static final String DataLoss = PREFIX + "DataLoss";
|
||||
public static final String CPUTimeStampCounter = PREFIX + "CPUTimeStampCounter";
|
||||
public static final String ActiveRecording = PREFIX + "ActiveRecording";
|
||||
public static final String ActiveSetting = PREFIX + "ActiveSetting";
|
||||
public static final String Flush = PREFIX + "Flush";
|
||||
|
||||
// Diagnostics
|
||||
|
Loading…
x
Reference in New Issue
Block a user