@Override
  public String status() throws UnableToControlProcessException, ConnectionFailedException,
      IOException, MBeanInvocationFailedException, InterruptedException, TimeoutException {
    try {
      return mbeanController.status();
    } catch (IOException | MBeanInvocationFailedException | ConnectionFailedException
        | UnableToControlProcessException e) {
      // if mbeanController already determines no such process exists, we can skip trying with
      // fileController
      String message = e.getMessage();
      if (message != null && message.toLowerCase().contains("no such process")) {
        throw e;
      }
      return fileController.status();
    }
  }
Process controller that attempts to use the MBeanProcessController but
falls back on FileProcessController if that fails
geode-core/src/main/java/org/apache/geode/internal/process/MBeanOrFileProcessController.java