public synchronized void onLeaderEvent()

in genie-web/src/main/java/com/netflix/genie/web/tasks/leader/LeaderTasksCoordinator.java [83:135]


    public synchronized void onLeaderEvent(final AbstractLeaderEvent leaderEvent) {
        if (leaderEvent instanceof OnGrantedEvent) {
            if (this.isRunning) {
                return;
            }
            log.info("Leadership granted.");
            this.isRunning = true;
            this.tasks.forEach(
                task -> {
                    switch (task.getScheduleType()) {
                        case TRIGGER:
                            final Trigger trigger = task.getTrigger();
                            log.info(
                                "Scheduling leadership task {} to run with trigger {}",
                                task.getClass().getCanonicalName(),
                                trigger
                            );
                            this.futures.add(this.taskScheduler.schedule(task, trigger));
                            break;
                        case FIXED_RATE:
                            final long rate = task.getFixedRate();
                            log.info(
                                "Scheduling leadership task {} to run every {} second(s)",
                                task.getClass().getCanonicalName(),
                                rate / 1000.0
                            );
                            this.futures.add(this.taskScheduler.scheduleAtFixedRate(task, rate));
                            break;
                        case FIXED_DELAY:
                            final long delay = task.getFixedDelay();
                            log.info(
                                "Scheduling leadership task {} to run at a fixed delay of every {} second(s)",
                                task.getClass().getCanonicalName(),
                                delay / 1000.0
                            );
                            this.futures.add(this.taskScheduler.scheduleWithFixedDelay(task, delay));
                            break;
                        default:
                            log.error("Unknown Genie task type {}", task.getScheduleType());
                    }
                }
            );
        } else if (leaderEvent instanceof OnRevokedEvent) {
            if (!this.isRunning) {
                return;
            }
            log.info("Leadership revoked.");
            this.isRunning = false;
            this.cancelTasks();
        } else {
            log.warn("Unknown leadership event {}. Ignoring.", leaderEvent);
        }
    }