in priam/src/main/java/com/netflix/priam/defaultimpl/CassandraProcessManager.java [71:114]
public void start(boolean join_ring) throws IOException {
logger.info("Starting cassandra server ....Join ring={}", join_ring);
instanceState.markLastAttemptedStartTime();
instanceState.setShouldCassandraBeAlive(true);
List<String> command = Lists.newArrayList();
if (config.useSudo()) {
logger.info("Configured to use sudo to start C*");
if (!"root".equals(System.getProperty("user.name"))) {
command.add(SUDO_STRING);
command.add("-n");
command.add("-E");
}
}
command.addAll(getStartCommand());
ProcessBuilder startCass = new ProcessBuilder(command);
Map<String, String> env = startCass.environment();
setEnv(env);
env.put("cassandra.join_ring", join_ring ? "true" : "false");
startCass.directory(new File("/"));
startCass.redirectErrorStream(true);
logger.info("Start cmd: {}", startCass.command());
logger.info("Start env: {}", startCass.environment());
Process starter = startCass.start();
logger.info("Starting cassandra server ....");
try {
int code = starter.waitFor();
if (code == 0) {
logger.info("Cassandra server has been started");
instanceState.setCassandraProcessAlive(true);
this.cassMonitorMetrics.incCassStart();
} else logger.error("Unable to start cassandra server. Error code: {}", code);
logProcessOutput(starter);
} catch (Exception e) {
logger.warn("Starting Cassandra has an error", e);
}
}