@Override
public void updateServiceEndpoints(LoadBalancerUpdate updates) {
mutex.writeLock().lock();
try {
Marker logMarker = append("serviceName", this.serviceName);
for (ServiceEndpoint ep : updates.getNewServices()) {
logger.debug(logMarker,
"Endpoint for {} became available: {}", this.serviceName, ep.getHostAndPort());
addServiceEndpoint(ep);
}
for (ServiceEndpoint ep : updates.getDeletedServices()) {
logger.debug(logMarker,
"Endpoint for {} became unavailable: {}", this.serviceName, ep.getHostAndPort());
updateEndpointHealth(ep, CircuitBreakerState.State.UNHEALTHY);
}
for (ServiceEndpoint ep : updates.getUpdatedServices()) {
logger.debug(logMarker,
"Health of endpoint {} of {} changed to {}", ep.getHostAndPort(), this.serviceName,
ep.getCircuitBreakerState());
updateEndpointHealth(ep, ep.getCircuitBreakerState());
}
} finally {
mutex.writeLock().unlock();
}
}