8338938: The result of the combine method of SettingsControl is not used

Reviewed-by: egahlin
This commit is contained in:
Chihiro Ito 2024-08-27 00:24:46 +00:00
parent 16df090784
commit 78f53efcd6
2 changed files with 31 additions and 2 deletions
src/jdk.jfr/share/classes/jdk/jfr/internal
test/jdk/jdk/jfr/api/settings

@ -141,7 +141,7 @@ final class Control {
@Override
public String run() {
try {
delegate.combine(Collections.unmodifiableSet(values));
return delegate.combine(Collections.unmodifiableSet(values));
} catch (Throwable t) {
// Prevent malicious user to propagate exception callback in the wrong context
Logger.log(LogTag.JFR_SETTING, LogLevel.WARN, "Exception occurred when combining " + values + " for " + getClass());

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 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
@ -70,6 +70,7 @@ public class TestFilterEvents {
continuous.enable(HTTPGetEvent.class).with("threadNames", "\"unused-threadname-1\"");
assertEquals(0, makeProfilingRecording("\"unused-threadname-2\""));
assertEquals(1, makeProfilingRecording("\"" + Thread.currentThread().getName() + "\""));
assertEquals(2, makeCombineControl());
continuous.close();
}
@ -94,4 +95,32 @@ public class TestFilterEvents {
}
}
private static int makeCombineControl() throws Exception {
try (Recording r1 = new Recording()) {
r1.enable(HTTPPostEvent.class).with("uriFilter", "https://www.example.com/list");
r1.start();
try (Recording r2 = new Recording()) {
r2.enable(HTTPPostEvent.class).with("uriFilter", "https://www.example.com/get");
r2.start();
HTTPPostEvent e1 = new HTTPPostEvent();
e1.uri = "https://www.example.com/list";
e1.commit();
HTTPPostEvent e2 = new HTTPPostEvent();
e2.uri = "https://www.example.com/get";
e2.commit();
HTTPPostEvent e3 = new HTTPPostEvent();
e3.uri = "https://www.example.com/put";
e3.commit();
}
r1.stop();
return Events.fromRecording(r1).size();
}
}
}