use of org.apache.geode.internal.process.PidUnavailableException in project geode by apache.
the class LocatorLauncher method statusWithWorkingDirectory.
private LocatorState statusWithWorkingDirectory() {
int parsedPid = 0;
try {
final ProcessController controller = new ProcessControllerFactory().createProcessController(this.controllerParameters, new File(getWorkingDirectory()), ProcessType.LOCATOR.getPidFileName(), READ_PID_FILE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
parsedPid = controller.getProcessId();
// note: in-process request will go infinite loop unless we do the following
if (parsedPid == ProcessUtils.identifyPid()) {
LocatorLauncher runningLauncher = getInstance();
if (runningLauncher != null) {
return runningLauncher.status();
}
}
final String statusJson = controller.status();
return LocatorState.fromJson(statusJson);
} catch (ConnectionFailedException e) {
// failed to attach to locator JVM
return createNoResponseState(e, "Failed to connect to locator with process id " + parsedPid);
} catch (FileNotFoundException e) {
// could not find pid file
return createNoResponseState(e, "Failed to find process file " + ProcessType.LOCATOR.getPidFileName() + " in " + getWorkingDirectory());
} catch (IOException e) {
// failed to open or read file or dir
return createNoResponseState(e, "Failed to communicate with locator with process id " + parsedPid);
} catch (MBeanInvocationFailedException e) {
// MBean either doesn't exist or method or attribute don't exist
return createNoResponseState(e, "Failed to communicate with locator with process id " + parsedPid);
} catch (PidUnavailableException e) {
// couldn't determine pid from within locator JVM
return createNoResponseState(e, "Failed to find usable process id within file " + ProcessType.LOCATOR.getPidFileName() + " in " + getWorkingDirectory());
} catch (UnableToControlProcessException e) {
return createNoResponseState(e, "Failed to communicate with locator with process id " + parsedPid);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return createNoResponseState(e, "Interrupted while trying to communicate with locator with process id " + parsedPid);
} catch (TimeoutException e) {
return createNoResponseState(e, "Failed to communicate with locator with process id " + parsedPid);
}
}
Aggregations