in src/main/java/org/apache/sling/discovery/impl/common/heartbeat/HeartbeatHandler.java [502:533]
private String newLeaderElectionId(ResourceResolver resourceResolver) {
int maxLongLength = String.valueOf(Long.MAX_VALUE).length();
String currentTimeMillisStr = String.format("%0"
+ maxLongLength + "d", System.currentTimeMillis());
final boolean shouldInvertRepositoryDescriptor = config.shouldInvertRepositoryDescriptor();
String prefix = (shouldInvertRepositoryDescriptor ? "1" : "0");
String leaderElectionRepositoryDescriptor = config.getLeaderElectionRepositoryDescriptor();
if (leaderElectionRepositoryDescriptor!=null && leaderElectionRepositoryDescriptor.length()!=0) {
// when this property is configured, check the value of the repository descriptor
// and if that value is set, include it in the leader election id
final Session session = resourceResolver.adaptTo(Session.class);
if ( session != null ) {
String value = session.getRepository()
.getDescriptor(leaderElectionRepositoryDescriptor);
if (value != null) {
if (value.equalsIgnoreCase("true")) {
if (!shouldInvertRepositoryDescriptor) {
prefix = "1";
} else {
prefix = "0";
}
}
}
}
}
final String newLeaderElectionId = prefix + "_"
+ currentTimeMillisStr + "_" + slingId;
return newLeaderElectionId;
}