in src/main/java/com/epam/dep/esp/common/OSRunner.java [56:126]
public Integer run(long processTimeout) {
boolean error = false;
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Wait for {}", process);
}
if (process.waitFor(processTimeout, TimeUnit.SECONDS)) {
return Integer.valueOf(process.exitValue());
} else {
return null;
}
} catch (InterruptedException ignore) {
LOGGER.error(INTERRUPTED, ignore);
error = true;
} finally {
if (!error) {
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Wait for error stream processing.");
}
errorPumper.join(timeout);
} catch (InterruptedException e) {
LOGGER.error(INTERRUPTED, e);
}
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Wait for std stream processing.");
}
stdPumper.join(timeout);
} catch (InterruptedException e) {
LOGGER.error(INTERRUPTED, e);
}
}
if (errorPumper.isAlive()) {
errorPumper.interrupt();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Kill Error Pumper {} {}}", process, errorPumper);
}
}
if (stdPumper.isAlive()) {
stdPumper.interrupt();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Kill Out Pumper {} {}", process, stdPumper);
}
}
if (error) {
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Wait for error die.");
}
errorPumper.join(timeout);
} catch (InterruptedException e) {
LOGGER.error(INTERRUPTED, e);
}
try {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Wait for std die.");
}
stdPumper.join(timeout);
} catch (InterruptedException e) {
LOGGER.error(INTERRUPTED, e);
}
}
result.addAll(errorPumper.getOut());
result.addAll(stdPumper.getOut());
}
return null;
}