Source:
<code>public void start() throws IOException { if (pluginEndpoint != null) { pluginEndpoint.start(); } writeLock.lock(); try { scheduledLoggingExecutor.scheduleAtFixedRate(new Runnable() { @Override public void run() { readLock.lock(); try { if (dagRunning) { LOG.info("Stats for current dag: {}", dagStats); } } finally { readLock.unlock(); } } }, 0, 10000L, TimeUnit.MILLISECONDS); <START> llapMetricsCollector.start(); <END> nodeEnablerFuture = nodeEnabledExecutor.submit(nodeEnablerCallable); Futures.addCallback(nodeEnablerFuture, new LoggingFutureCallback("NodeEnablerThread", LOG)); delayedTaskSchedulerFuture = delayedTaskSchedulerExecutor.submit(delayedTaskSchedulerCallable); Futures.addCallback(delayedTaskSchedulerFuture, new LoggingFutureCallback("DelayedTaskSchedulerThread", LOG)); schedulerFuture = schedulerExecutor.submit(schedulerCallable); Futures.addCallback(schedulerFuture, new LoggingFutureCallback("SchedulerThread", LOG)); registry.start(); registry.registerStateChangeListener(new NodeStateChangeListener()); registry.registerStateChangeListener(llapMetricsCollector); activeInstances = registry.getInstances(); for (LlapServiceInstance inst : activeInstances.getAll()) { registerAndAddNode(new NodeInfo(inst, nodeBlacklistConf, clock, numSchedulableTasksPerNode, metrics), inst); } if (amRegistry != null) { amRegistry.start(); int pluginPort = pluginEndpoint != null ? pluginEndpoint.getActualPort() : -1; amRegistry.register(amPort, pluginPort, HiveConf.getVar(conf, ConfVars.HIVESESSIONID), serializedToken, jobIdForToken, 0); } } finally { writeLock.unlock(); } }</code><technical_language>move start code, adding collector registry? Otherwise, collector LLAP daemons scheduler execution is a NOOP...</technical_language>

Target:
public void start() throws IOException { if (pluginEndpoint != null) { pluginEndpoint.start(); } writeLock.lock(); try { scheduledLoggingExecutor.scheduleAtFixedRate(new Runnable() { @Override public void run() { readLock.lock(); try { if (dagRunning) { LOG.info("Stats for current dag: {}", dagStats); } } finally { readLock.unlock(); } } }, 0, 10000L, TimeUnit.MILLISECONDS); nodeEnablerFuture = nodeEnabledExecutor.submit(nodeEnablerCallable); Futures.addCallback(nodeEnablerFuture, new LoggingFutureCallback("NodeEnablerThread", LOG)); delayedTaskSchedulerFuture = delayedTaskSchedulerExecutor.submit(delayedTaskSchedulerCallable); Futures.addCallback(delayedTaskSchedulerFuture, new LoggingFutureCallback("DelayedTaskSchedulerThread", LOG)); schedulerFuture = schedulerExecutor.submit(schedulerCallable); Futures.addCallback(schedulerFuture, new LoggingFutureCallback("SchedulerThread", LOG)); registry.start(); registry.registerStateChangeListener(new NodeStateChangeListener()); activeInstances = registry.getInstances(); for (LlapServiceInstance inst : activeInstances.getAll()) { registerAndAddNode(new NodeInfo(inst, nodeBlacklistConf, clock, numSchedulableTasksPerNode, metrics), inst); } if (amRegistry != null) { amRegistry.start(); int pluginPort = pluginEndpoint != null ? pluginEndpoint.getActualPort() : -1; amRegistry.register(amPort, pluginPort, HiveConf.getVar(conf, ConfVars.HIVESESSIONID), serializedToken, jobIdForToken, 0); } } finally { writeLock.unlock(); } }