private boolean processNextQueuedRemoteTask() {
        metricUpdater.updateRemoteTaskQueueSize(remoteTasks.size());

        RemoteClusterControllerTask task = remoteTasks.poll();
        if (task == null) {
            return false;
        }

        final RemoteClusterControllerTask.Context taskContext = createRemoteTaskProcessingContext();
        context.log(logger, Level.FINEST, () -> String.format("Processing remote task of type '%s'", task.getClass().getName()));
        task.doRemoteFleetControllerTask(taskContext);
        if (taskMayBeCompletedImmediately(task)) {
            context.log(logger, Level.FINEST, () -> String.format("Done processing remote task of type '%s'", task.getClass().getName()));
            task.notifyCompleted();
        } else {
            context.log(logger, Level.FINEST, () -> String.format("Remote task of type '%s' queued until state recomputation", task.getClass().getName()));
            tasksPendingStateRecompute.add(task);
        }

        return true;
    }
This is called when the options field has been set to a new set of options
clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java