in core/src/main/java/com/google/cloud/sql/core/DnsInstanceConnectionNameResolver.java [59:96]
private CloudSqlInstanceName resolveDomainName(String name) {
// Next, attempt to resolve DNS name.
Collection<String> instanceNames;
try {
instanceNames = this.dnsResolver.resolveTxt(name);
} catch (NameNotFoundException ne) {
// No DNS record found. This is not a valid instance name.
throw new IllegalArgumentException(
String.format(
"Unable to resolve TXT record containing the instance name for "
+ "domain name \"%s\".",
name));
}
// Use the first valid instance name from the list
// or throw an IllegalArgumentException if none of the values can be parsed.
return instanceNames.stream()
.map(
target -> {
try {
return new CloudSqlInstanceName(target, name);
} catch (IllegalArgumentException e) {
logger.info(
"Unable to parse instance name in TXT record for "
+ "domain name \"{}\" with target \"{}\"",
name,
target,
e);
return null;
}
})
.filter(Objects::nonNull)
.findFirst()
.orElseThrow(
() ->
new IllegalArgumentException(
String.format("Unable to parse values of TXT record for \"%s\".", name)));
}