diff -r de154169948b -r 025c9b8eaefd src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java Thu Jul 11 02:21:18 2019 +0200 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java Fri Jul 12 15:04:28 2019 +0200 @@ -210,10 +210,14 @@ } public synchronized List getEventControls() { - List controls = new ArrayList<>(); + List> eventClasses = jvm.getAllEventClasses(); + ArrayList controls = new ArrayList<>(eventClasses.size() + nativeControls.size()); controls.addAll(nativeControls); - for (EventHandler eh : getEventHandlers()) { - controls.add(eh.getEventControl()); + for (Class clazz : eventClasses) { + EventHandler eh = Utils.getHandler(clazz); + if (eh != null) { + controls.add(eh.getEventControl()); + } } return controls; } @@ -319,4 +323,8 @@ } this.flushMetadata = false; } + + + + }