diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java index 16f827a2df5..05c75a0e48e 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2024, 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 @@ -108,15 +108,18 @@ final class Control { // VM events requires no access control context try { delegate.setValue(value); + lastValue = delegate.getValue(); } catch (Throwable t) { Logger.log(LogTag.JFR_SETTING, LogLevel.WARN, "Exception occurred when setting value \"" + value + "\" for " + getClass()); + lastValue = null; } } else { - AccessController.doPrivileged(new PrivilegedAction<Void>() { + lastValue = AccessController.doPrivileged(new PrivilegedAction<String>() { @Override - public Void run() { + public String run() { try { delegate.setValue(value); + return delegate.getValue(); } catch (Throwable t) { // Prevent malicious user to propagate exception callback in the wrong context Logger.log(LogTag.JFR_SETTING, LogLevel.WARN, "Exception occurred when setting value \"" + value + "\" for " + getClass()); @@ -125,7 +128,6 @@ final class Control { } }, context); } - lastValue = value; }