@GuardedBy("lock") private void updateLeader() { // this must be called under the lock assert Thread.holdsLock(lock); if (currentLeaderConfirmed == null && currentLeaderProposed == null) { // we need a new leader if (allLeaderContenders.isEmpty()) { // no new leader available, tell everyone that there is no leader currently for (EmbeddedLeaderRetrievalService listener : listeners) { notificationExecutor.execute( new NotifyOfLeaderCall(null, null, listener.listener, LOG)); } } else { // propose a leader and ask it final UUID leaderSessionId = UUID.randomUUID(); EmbeddedLeaderElectionService leaderService = allLeaderContenders.iterator().next(); currentLeaderSessionId = leaderSessionId; currentLeaderProposed = leaderService; LOG.info("Proposing leadership to contender {} @ {}", leaderService.contender, leaderService.contender.getAddress()); notificationExecutor.execute( new GrantLeadershipCall(leaderService, leaderSessionId, LOG)); } } }
@GuardedBy("lock") private void updateLeader() { // this must be called under the lock assert Thread.holdsLock(lock); if (currentLeaderConfirmed == null && currentLeaderProposed == null) { // we need a new leader if (allLeaderContenders.isEmpty()) { // no new leader available, tell everyone that there is no leader currently for (EmbeddedLeaderRetrievalService listener : listeners) { notificationExecutor.execute( new NotifyOfLeaderCall(null, null, listener.listener, LOG)); } } else { // propose a leader and ask it final UUID leaderSessionId = UUID.randomUUID(); EmbeddedLeaderElectionService leaderService = allLeaderContenders.iterator().next(); currentLeaderSessionId = leaderSessionId; currentLeaderProposed = leaderService; LOG.info("Proposing leadership to contender {} @ {}", leaderService.contender, leaderService.contender.getAddress()); notificationExecutor.execute( new GrantLeadershipCall(leaderService, leaderSessionId, LOG)); } } }
@GuardedBy("lock") private void updateLeader() { // this must be called under the lock assert Thread.holdsLock(lock); if (currentLeaderConfirmed == null && currentLeaderProposed == null) { // we need a new leader if (allLeaderContenders.isEmpty()) { // no new leader available, tell everyone that there is no leader currently for (EmbeddedLeaderRetrievalService listener : listeners) { notificationExecutor.execute( new NotifyOfLeaderCall(null, null, listener.listener, LOG)); } } else { // propose a leader and ask it final UUID leaderSessionId = UUID.randomUUID(); EmbeddedLeaderElectionService leaderService = allLeaderContenders.iterator().next(); currentLeaderSessionId = leaderSessionId; currentLeaderProposed = leaderService; LOG.info("Proposing leadership to contender {} @ {}", leaderService.contender, leaderService.contender.getAddress()); notificationExecutor.execute( new GrantLeadershipCall(leaderService.contender, leaderSessionId, LOG)); } } }
@GuardedBy("lock") private void updateLeader() { // this must be called under the lock assert Thread.holdsLock(lock); if (currentLeaderConfirmed == null && currentLeaderProposed == null) { // we need a new leader if (allLeaderContenders.isEmpty()) { // no new leader available, tell everyone that there is no leader currently for (EmbeddedLeaderRetrievalService listener : listeners) { notificationExecutor.execute( new NotifyOfLeaderCall(null, null, listener.listener, LOG)); } } else { // propose a leader and ask it final UUID leaderSessionId = UUID.randomUUID(); EmbeddedLeaderElectionService leaderService = allLeaderContenders.iterator().next(); currentLeaderSessionId = leaderSessionId; currentLeaderProposed = leaderService; LOG.info("Proposing leadership to contender {} @ {}", leaderService.contender, leaderService.contender.getAddress()); notificationExecutor.execute( new GrantLeadershipCall(leaderService, leaderSessionId, LOG)); } } }