This is an automated email from the ASF dual-hosted git repository. klund pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
commit f074ca72ae9a8e76066c3ccd7ba74499ceec1743 Author: Kirk Lund <kl...@apache.org> AuthorDate: Thu May 30 11:17:49 2019 -0700 GEODE-6183: Make isAttachAPIFound load providers VirtualMachine class can be loaded even if AttachProvider service providers are not found. This change forces loading of providers for isAttachAPIFound. Co-authored-by: Michael Oleske <mole...@pivotal.io> --- .../geode/internal/process/ProcessControllerFactory.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/process/ProcessControllerFactory.java b/geode-core/src/main/java/org/apache/geode/internal/process/ProcessControllerFactory.java index 3911a08..93a8238 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/process/ProcessControllerFactory.java +++ b/geode-core/src/main/java/org/apache/geode/internal/process/ProcessControllerFactory.java @@ -20,6 +20,9 @@ import static org.apache.commons.lang3.Validate.notNull; import java.io.File; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ServiceConfigurationError; import java.util.concurrent.TimeoutException; import org.apache.geode.distributed.internal.DistributionConfig; @@ -72,9 +75,14 @@ public class ProcessControllerFactory { } boolean found = false; try { - final Class<?> virtualMachineClass = Class.forName("com.sun.tools.attach.VirtualMachine"); - found = virtualMachineClass != null; - } catch (ClassNotFoundException ignore) { + final Class<?> virtualMachineClass = Class.forName("com.sun.tools.attach.spi.AttachProvider"); + if (virtualMachineClass != null) { + Method providersMethod = virtualMachineClass.getMethod("providers"); + providersMethod.invoke(virtualMachineClass); + found = true; + } + } catch (ClassNotFoundException | IllegalAccessException | InvocationTargetException + | NoSuchMethodException | ServiceConfigurationError ignore) { } return found; }