quarkusio/quarkus · warning · IllegalArgumentException
Unknown DNS record type:
Error message
Unknown DNS record type:
What it means
MongoDnsClient implements the driver's DnsClient SPI and resolves only SRV and TXT records, which are the only record types mongodb+srv:// discovery requires. Any other record type string passed to getResourceRecordData is rejected with this IllegalArgumentException.
Source
Thrown at extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/dns/MongoDnsClient.java:99
try (Stream<String> lines = Files.lines(conf)) {
nameServers = lines
.filter(line -> line.startsWith("nameserver"))
.map(line -> line.split(" ")[1])
.collect(Collectors.toList());
} catch (IOException | ArrayIndexOutOfBoundsException e) {
log.info("Unable to read the /etc/resolv.conf file", e);
}
}
return nameServers;
}
@Override
public List<String> getResourceRecordData(String name, String type) throws DnsException {
log.debugf("Resolving DNS record for name: %s and type: %s", name, type);
return switch (type) {
case "SRV" -> resolveSrvRequest(name);
case "TXT" -> resolveTxtRequest(name);
default -> throw new IllegalArgumentException("Unknown DNS record type: " + type);
};
}
/*
* The format of SRV record is
* priority weight port target.
* e.g.
* 0 5 5060 example.com.
* The priority and weight are ignored, and we just concatenate the host (after removing the ending '.') and port with a
* ':' in between, as expected by ServerAddress.
* It's required that the srvHost has at least three parts (e.g. foo.bar.baz) and that all of the resolved hosts have a
* parent
* domain equal to the domain of the srvHost.
*/
private List<String> resolveSrvRequest(final String srvHost) {
List<String> hosts = new ArrayList<>();
Duration timeout = mongoConfig.dnsLookupTimeout();
View on GitHub (pinned to e1c734241f)
Solutions
- Only request "SRV" or "TXT" record types from this client
- Check the type argument's exact casing — the switch is case-sensitive
- If you need A/AAAA resolution, use the standard DNS client (Vertx DnsClient) instead of the Mongo DnsClient SPI
- Ensure you're on matching versions of quarkus-mongodb-client and the driver so the SPI contract is honored
Example fix
// before dnsClient.getResourceRecordData(host, "srv"); // after dnsClient.getResourceRecordData(host, "SRV");
Defensive patterns
Strategy: type-guard
Validate before calling
// Only pass supported record types
if (!"SRV".equals(type) && !"TXT".equals(type)) {
throw new IllegalArgumentException("MongoDnsClient supports only SRV/TXT, got: " + type);
} Type guard
boolean isSupportedRecordType(String type) {
return "SRV".equals(type) || "TXT".equals(type);
} Try / catch
try {
records = dnsClient.getResourceRecordData(name, type);
} catch (IllegalArgumentException e) {
log.warn("Unsupported record type requested: " + type);
records = List.of();
} Prevention
- Request only SRV and TXT from the Mongo DnsClient SPI
- Keep type strings uppercase constants
- Use a general-purpose DNS client for other record types
When it happens
Trigger: The MongoDB driver's DNS resolution layer (or custom code using MongoDnsClient) requests a record type other than "SRV" or "TXT" from getResourceRecordData(name, type).
Common situations: Driver version behavior requesting A/AAAA records through this client; custom code calling the DnsClient SPI directly with the wrong type string; lowercase or padded type strings like "srv" instead of "SRV".
Related errors
- No SRV records available for host
- Unable to look up SRV record for host
- Unable to look up TXT record for host
- Unable to resolve "${value}"
- Error while loading the liquibase changelogs: %s
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/2402680dc7fc7766.
Report an issue: GitHub.