in mode/cluster/repository/nacos/src/main/java/org/apache/shardingsphere/mode/repository/cluster/nacos/NacosRepository.java [339:351]
private boolean isAvailable(final Collection<KeyValue> keyValues) throws NacosException {
Map<Boolean, List<KeyValue>> keyValueMap = keyValues.stream().collect(Collectors.groupingBy(KeyValue::isEphemeral));
for (Entry<Boolean, List<KeyValue>> entry : keyValueMap.entrySet()) {
ServiceMetaData service = serviceController.getService(entry.getKey());
Map<String, List<Instance>> instanceMap = client.getAllInstances(service.getServiceName(), false).stream().collect(Collectors.groupingBy(NacosMetaDataUtils::getKey));
keyValues.removeIf(keyValue -> {
String key = keyValue.getKey();
String value = keyValue.getValue();
return instanceMap.containsKey(key) ? instanceMap.get(key).stream().anyMatch(each -> Objects.equals(NacosMetaDataUtils.getValue(each), value)) : null == value;
});
}
return keyValues.isEmpty();
}