in priam/src/main/java/com/netflix/priam/identity/token/TokenRetriever.java [288:317]
private PriamInstance claimToken(PriamInstance originalInstance) {
String hostIP =
config.usePrivateIP() ? myInstanceInfo.getPrivateIP() : myInstanceInfo.getHostIP();
if (originalInstance.getInstanceId().equals(myInstanceInfo.getInstanceId())
&& originalInstance.getHostName().equals(myInstanceInfo.getHostname())
&& originalInstance.getHostIP().equals(hostIP)
&& originalInstance.getRac().equals(myInstanceInfo.getRac())) {
return originalInstance;
}
PriamInstance newInstance = new PriamInstance();
newInstance.setApp(config.getAppName());
newInstance.setId(originalInstance.getId());
newInstance.setInstanceId(myInstanceInfo.getInstanceId());
newInstance.setHost(myInstanceInfo.getHostname());
newInstance.setHostIP(hostIP);
newInstance.setRac(myInstanceInfo.getRac());
newInstance.setVolumes(originalInstance.getVolumes());
newInstance.setToken(originalInstance.getToken());
newInstance.setDC(originalInstance.getDC());
try {
factory.update(originalInstance, newInstance);
} catch (Exception ex) {
long sleepTime = randomizer.nextInt(MAX_VALUE_IN_MILISECS);
String token = newInstance.getToken();
logger.warn("Failed updating token: {}; sleeping {} millis", token, sleepTime);
sleeper.sleepQuietly(sleepTime);
throw ex;
}
return newInstance;
}