in iep-spring-leader-redis-cluster/src/main/java/com/netflix/iep/leader/redis/RedisClusterLeaderDatabase.java [214:238]
private boolean tryToAcquire(Jedis client, String key) {
Transaction transaction = client.multi();
transaction.set(key, leaderString, leaderParams);
List<Object> results = transaction.exec();
if (results == null || results.isEmpty()) {
return false;
} else if (results.get(0) == null || !results.get(0).equals("OK")) {
String data = client.get(key);
if (data != null && !data.equals(leaderString)) {
logger.info("Leader for {} was {}", key, data);
} else {
logger.error("Failed to acquire the leader key for {}", key);
}
return false;
} else {
String data = client.get(key);
if (data == null || !data.equals(leaderString)) {
logger.warn("Successfully executed acquisition transaction but leader was still {}", data);
return false;
} else {
logger.info("Successfully captured leadership for key {}", key);
return true;
}
}
}