package io.lumify.lrp.yarn;
import io.lumify.core.bootstrap.InjectHelper;
import io.lumify.core.bootstrap.LumifyBootstrap;
import io.lumify.core.config.Configuration;
import io.lumify.core.config.ConfigurationLoader;
import io.lumify.core.exception.LumifyException;
import io.lumify.core.model.longRunningProcess.LongRunningProcessRunner;
import io.lumify.core.model.workQueue.WorkQueueRepository;
import io.lumify.core.util.LumifyLogger;
import io.lumify.core.util.LumifyLoggerFactory;
import io.lumify.yarn.TaskBase;
public class LongRunningProcessYarnTask extends TaskBase {
private static final LumifyLogger LOGGER = LumifyLoggerFactory.getLogger(LongRunningProcessYarnTask.class);
public static void main(String[] args) {
new LongRunningProcessYarnTask().run(args);
}
public void run() {
LOGGER.info("BEGIN Run");
try {
Configuration configuration = ConfigurationLoader.load();
InjectHelper.ModuleMaker moduleMaker = LumifyBootstrap.bootstrapModuleMaker(configuration);
WorkQueueRepository workQueueRepository = InjectHelper.getInstance(WorkQueueRepository.class, moduleMaker, configuration);
LongRunningProcessRunner longRunningProcessRunner = InjectHelper.getInstance(LongRunningProcessRunner.class);
longRunningProcessRunner.prepare(configuration.toMap());
while (true) {
WorkQueueRepository.LongRunningProcessMessage longRunningProcessMessage = workQueueRepository.getNextLongRunningProcessMessage();
if (longRunningProcessMessage == null) {
continue;
}
try {
longRunningProcessRunner.process(longRunningProcessMessage.getMessage());
longRunningProcessMessage.complete();
} catch (Throwable ex) {
LOGGER.error("Failed to process long running process: %s", longRunningProcessMessage.getMessage());
longRunningProcessMessage.complete(ex);
}
}
} catch (Exception ex) {
throw new LumifyException("GraphPropertyRunner failed", ex);
} finally {
LOGGER.info("END Run");
}
}
}