changeset 59896:fc52ceda935a

8242593: JFR: EventFactory does not scale well past unique 1000 events Reviewed-by: jbachorik
author egahlin
date Tue, 23 Jun 2020 20:15:54 +0200
parents caad1ce9bb8f
children d2816784605b
files src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java
diffstat 2 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java	Tue Jun 23 10:40:26 2020 -0700
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java	Tue Jun 23 20:15:54 2020 +0200
@@ -142,13 +142,11 @@
         handler.setRegistered(true);
         typeLibrary.addType(handler.getPlatformEventType());
         if (jvm.isRecording()) {
-            storeDescriptorInJVM(); // needed for emergency dump
             settingsManager.setEventControl(handler.getEventControl());
             settingsManager.updateRetransform(Collections.singletonList((eventClass)));
-        } else {
-            setStaleMetadata();
-        }
-        return handler.getEventType();
+       }
+       setStaleMetadata();
+       return handler.getEventType();
     }
 
     private PlatformEventType findMirrorType(Class<? extends jdk.internal.event.Event> eventClass) throws InternalError {
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java	Tue Jun 23 10:40:26 2020 -0700
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/Summary.java	Tue Jun 23 20:15:54 2020 +0200
@@ -120,6 +120,10 @@
                     int size = input.readInt();
                     long eventTypeId = input.readLong();
                     Statistics s = stats.get(eventTypeId);
+                    if (s == null) {
+                        s = new Statistics(eventTypeId + " (missing event metadata)");
+                        stats.put(eventTypeId, s);
+                    }
                     if (s != null) {
                         s.count++;
                         s.size += size;
@@ -138,7 +142,6 @@
             println(" Chunks: " + chunks);
             println(" Start: " + DATE_FORMAT.format(Instant.ofEpochSecond(epochSeconds, adjustNanos)) + " (UTC)");
             println(" Duration: " + (totalDuration + 500_000_000) / 1_000_000_000 + " s");
-
             List<Statistics> statsList = new ArrayList<>(stats.values());
             Collections.sort(statsList, (u, v) -> Long.compare(v.count, u.count));
             println();