I just started forked a JVM from a benchmark setup using something like this:
List<String> command = new ArrayList<>(); command.add( new File(new File(System.getProperty("java.home"), "bin"), "java").getCanonicalPath()); command.add( "-D" + DistributionConfig.GEMFIRE_PREFIX + ConfigurationProperties.MCAST_PORT + "=0"); command.add( "-D" + DistributionConfig.GEMFIRE_PREFIX + ConfigurationProperties.LOCATORS + "\"\""); command.add("-Dgemfire.cache-xml-file=" + destServerXml.getAbsolutePath()); command.add("-cp"); command.add(System.getProperty("java.class.path")); command.add(ServerLauncher.class.getName()); command.add(ServerLauncher.Command.START.getName()); command.add("server1"); command.add("--server-port=" + this.serverPort); The resulting JVM has a bewildering reference to ExportLogsIntegrationTest and LocatorStarterRule in its "main" thread. It's almost as if some of the geode-core test code is somehow being found by the CommandManager scanning done by gfsh and this is being triggered by creating the MemberMXBean in the newly launched Server. I think ClasspathScanLoadHelper needs to exclude classes from test sources, but since I'm running a class in src/jmh, I'm not sure how to fix this? "main" #1 prio=5 os_prio=31 tid=0x00007fea58801800 nid=0x1b03 waiting on condition [0x0000700001b39000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x000000076da9eb18> (a java.util.concurrent.CountDownLatch$Sync) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037) at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1328) at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:277) at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:85) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:117) at org.awaitility.core.AssertionCondition.await(AssertionCondition.java:32) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:809) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:648) at org.apache.geode.test.dunit.rules.LocatorStarterRule.startLocator(LocatorStarterRule.java:84) at org.apache.geode.management.internal.cli.commands.ExportLogsIntegrationTest.<clinit>(ExportLogsIntegrationTest.java:33) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.apache.geode.internal.ClassPathLoader.forName(ClassPathLoader.java:403) at org.apache.geode.management.internal.cli.util.ClasspathScanLoadHelper.getClasses(ClasspathScanLoadHelper.java:180) at org.apache.geode.management.internal.cli.util.ClasspathScanLoadHelper.getClasses(ClasspathScanLoadHelper.java:120) at org.apache.geode.management.internal.cli.util.ClasspathScanLoadHelper.loadAndGet(ClasspathScanLoadHelper.java:49) at org.apache.geode.management.internal.cli.CommandManager.loadCommands(CommandManager.java:169) at org.apache.geode.management.internal.cli.CommandManager.<init>(CommandManager.java:67) at org.apache.geode.management.internal.cli.CommandManager.getInstance(CommandManager.java:294) - locked <0x000000076b9cb168> (a java.lang.Object) at org.apache.geode.management.internal.cli.CommandManager.getInstance(CommandManager.java:274) at org.apache.geode.management.internal.cli.remote.CommandProcessor.<init>(CommandProcessor.java:62) at org.apache.geode.management.internal.cli.remote.MemberCommandService.<init>(MemberCommandService.java:37) at org.apache.geode.management.cli.CommandService.createLocalCommandService(CommandService.java:127) at org.apache.geode.management.internal.beans.MemberMBeanBridge.<init>(MemberMBeanBridge.java:311) at org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:155) at org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:113) at org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2146) at org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:536) at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1234) at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:798) - locked <0x00000006c0165758> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl) at org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:783) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:178) - locked <0x00000006c004c5d0> (a java.lang.Class for org.apache.geode.cache.CacheFactory) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:218) - locked <0x00000006c004c5d0> (a java.lang.Class for org.apache.geode.cache.CacheFactory) at org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52) at org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:857) at org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:769) at org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:696) at org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:228)