in iep-leader-api/src/main/java/com/netflix/iep/leader/StandardLeaderElector.java [141:181]
public boolean removeLeaderFor(ResourceId resourceId) {
boolean removed = false;
try {
removed = leaderDatabase.removeLeadershipFor(resourceId);
if (removed) {
resourceLeaders.put(resourceId, LeaderId.NO_LEADER);
registry.counter(
leaderRemovalsCounterId
.withTag("resource", resourceId.getId())
.withTag("result", "success")
)
.increment();
} else {
registry.counter(
leaderRemovalsCounterId
.withTag("resource", resourceId.getId())
.withTag("result", "failure")
.withTag("error", "not_leader")
)
.increment();
}
} catch (Exception e) {
final boolean removeLocalLeaderOnError = removeLocalLeaderStatusOnError();
if (removeLocalLeaderOnError) {
resourceLeaders.put(resourceId, LeaderId.UNKNOWN);
}
final String exceptionName = e.getCause() != null ?
e.getCause().getClass().getSimpleName() : e.getClass().getSimpleName();
registry.counter(
leaderRemovalsCounterId
.withTag("resource", resourceId.getId())
.withTag("result", "failure")
.withTag("error", exceptionName)
)
.increment();
logger.error("Exception during leader removal", e);
}
return removed;
}