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 05c75a0e48e..8f246948710 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Control.java @@ -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()); diff --git a/test/jdk/jdk/jfr/api/settings/TestFilterEvents.java b/test/jdk/jdk/jfr/api/settings/TestFilterEvents.java index 42bfc31767e..67619fb10b4 100644 --- a/test/jdk/jdk/jfr/api/settings/TestFilterEvents.java +++ b/test/jdk/jdk/jfr/api/settings/TestFilterEvents.java @@ -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(); + } + } + }