in twill-yarn/src/main/java/org/apache/twill/internal/appmaster/ApplicationMasterService.java [715:744]
private boolean handleSetInstances(final Message message, final Runnable completion) {
if (message.getType() != Message.Type.SYSTEM || message.getScope() != Message.Scope.RUNNABLE) {
return false;
}
Command command = message.getCommand();
Map<String, String> options = command.getOptions();
if (!"instances".equals(command.getCommand()) || !options.containsKey("count")) {
return false;
}
final String runnableName = message.getRunnableName();
if (runnableName == null || runnableName.isEmpty() || !twillSpec.getRunnables().containsKey(runnableName)) {
LOG.info("Unknown runnable {}", runnableName);
return false;
}
final int newCount = Integer.parseInt(options.get("count"));
final int oldCount = expectedContainers.getExpected(runnableName);
LOG.info("Received change instances request for {}, from {} to {}.", runnableName, oldCount, newCount);
if (newCount == oldCount) { // Nothing to do, simply complete the request.
completion.run();
return true;
}
instanceChangeExecutor.execute(createSetInstanceRunnable(message, completion, oldCount, newCount));
return true;
}