From a213624685171ad52f675bfcdff95abdd29d84ca Mon Sep 17 00:00:00 2001 From: not-matthias Date: Tue, 31 Mar 2026 20:33:08 +0200 Subject: [PATCH 1/2] fix: remove fork(0) limitation from JMH runner Process filtering is now supported, so the workaround that forced forks=0 and warmupForks=0 under CodSpeed instrumentation is no longer needed. Benchmarks now respect the user-configured fork count. Resolves COD-2447 --- .../src/main/java/org/openjdk/jmh/runner/Runner.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/jmh-fork/jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java b/jmh-fork/jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java index 4a11281..59e6ab0 100644 --- a/jmh-fork/jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java +++ b/jmh-fork/jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java @@ -69,7 +69,6 @@ public class Runner extends BaseRunner { private static final int TAIL_LINES_ON_ERROR = Integer.getInteger("jmh.tailLines", 20); private static final String JMH_LOCK_FILE = System.getProperty("java.io.tmpdir") + "/jmh.lock"; private static final Boolean JMH_LOCK_IGNORE = Boolean.getBoolean("jmh.ignoreLock"); - private static boolean codspeedForksWarningShown = false; private final BenchmarkList list; private int cpuCount; @@ -478,17 +477,6 @@ private BenchmarkParams newBenchmarkParams(BenchmarkListEntry benchmark, ActionM benchmark.getWarmupForks().orElse( Defaults.WARMUP_FORKS)); - // TODO(COD-1788): Remove this after process filtering is supported - if (InstrumentHooks.getInstance().isInstrumented() && !"1".equals(System.getenv("CODSPEED_JVM_ALLOW_FORKS"))) { - if ((forks > 0 || warmupForks > 0) && !codspeedForksWarningShown) { - out.println("# CodSpeed: forcing forks=0 to enable flamegraph support."); - out.println("# Set CODSPEED_JVM_ALLOW_FORKS=1 to disable this override."); - codspeedForksWarningShown = true; - } - forks = 0; - warmupForks = 0; - } - TimeUnit timeUnit = options.getTimeUnit().orElse( benchmark.getTimeUnit().orElse( Defaults.OUTPUT_TIMEUNIT)); From 4b7a7675cff237d57e265577fe1cfdb065933223 Mon Sep 17 00:00:00 2001 From: not-matthias Date: Thu, 2 Apr 2026 16:22:00 +0200 Subject: [PATCH 2/2] fix: handle git worktrees in findGitRoot by checking for .git file or directory --- jmh-fork/jmh-core/src/main/java/io/codspeed/BenchmarkUri.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jmh-fork/jmh-core/src/main/java/io/codspeed/BenchmarkUri.java b/jmh-fork/jmh-core/src/main/java/io/codspeed/BenchmarkUri.java index 869c783..e1cd307 100644 --- a/jmh-fork/jmh-core/src/main/java/io/codspeed/BenchmarkUri.java +++ b/jmh-fork/jmh-core/src/main/java/io/codspeed/BenchmarkUri.java @@ -98,7 +98,7 @@ static Path findGitRoot() { Path current = Paths.get(System.getProperty("user.dir")).toAbsolutePath().normalize(); while (current != null) { - if (Files.isDirectory(current.resolve(".git"))) { + if (Files.exists(current.resolve(".git"))) { cachedGitRoot = current; return current; }