diff --git a/src/share/classes/jdk/jfr/internal/MetadataRepository.java b/src/share/classes/jdk/jfr/internal/MetadataRepository.java index b0b0db71ddb7ebb64175c58d992361b92abc9e1f..b718664e1546e8dff51c98ab2f9e938398238176 100644 --- a/src/share/classes/jdk/jfr/internal/MetadataRepository.java +++ b/src/share/classes/jdk/jfr/internal/MetadataRepository.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2019, 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 @@ -232,20 +232,22 @@ public final class MetadataRepository { staleMetadata = true; } - // Lock around setOutput ensures that other threads dosn't - // emit event after setOutput and unregister the event class, before a call + // Lock around setOutput ensures that other threads don't + // emit events after setOutput and unregister the event class, before a call // to storeDescriptorInJVM synchronized void setOutput(String filename) { + if (staleMetadata) { + storeDescriptorInJVM(); + } jvm.setOutput(filename); unregisterUnloaded(); if (unregistered) { - staleMetadata = typeLibrary.clearUnregistered(); + if (typeLibrary.clearUnregistered()) { + storeDescriptorInJVM(); + } unregistered = false; } - if (staleMetadata) { - storeDescriptorInJVM(); - } } private void unregisterUnloaded() {