in gremlin-client/src/main/java/org/apache/tinkerpop/gremlin/driver/GremlinClient.java [90:124]
public synchronized void refreshEndpoints(EndpointCollection endpoints) {
if (closing.get() != null) {
return;
}
EndpointFilter endpointFilter =
new EmptyEndpointFilter(endpointStrategies.endpointFilter());
EndpointClientCollection currentEndpointClientCollection = endpointClientCollection.get();
EndpointCollection enrichedEndpoints = endpoints.getEnrichedEndpoints(endpointFilter);
EndpointCollection acceptedEndpoints = enrichedEndpoints.getAcceptedEndpoints(endpointFilter);
EndpointCollection rejectedEndpoints = enrichedEndpoints.getRejectedEndpoints(endpointFilter);
List<EndpointClient> survivingEndpointClients =
currentEndpointClientCollection.getSurvivingEndpointClients(acceptedEndpoints);
EndpointCollection newEndpoints = acceptedEndpoints.getEndpointsWithNoCluster(clientClusterCollection);
Map<Endpoint, Cluster> newEndpointClusters = clientClusterCollection.createClustersForEndpoints(newEndpoints);
List<EndpointClient> newEndpointClients = EndpointClient.create(newEndpointClusters);
EndpointClientCollection newEndpointClientCollection = new EndpointClientCollection(
EndpointClientCollection.builder()
.withEndpointClients(CollectionUtils.join(survivingEndpointClients, newEndpointClients))
.withRejectedEndpoints(rejectedEndpoints)
.setCollectMetrics(metricsConfig.enableMetrics())
);
endpointClientCollection.set(newEndpointClientCollection);
clientClusterCollection.removeClustersWithNoMatchingEndpoint(newEndpointClientCollection.endpoints());
currentEndpointClientCollection.close(metricsConfig.metricsHandlers());
}