Index: src/protocol/http/org/apache/jmeter/protocol/http/control/DNSCacheManager.java =================================================================== --- src/protocol/http/org/apache/jmeter/protocol/http/control/DNSCacheManager.java (Revision 1803896) +++ src/protocol/http/org/apache/jmeter/protocol/http/control/DNSCacheManager.java (Arbeitskopie) @@ -217,7 +217,10 @@ List addresses = new ArrayList<>(); for (String address : Arrays.asList(entry.getAddress().split("\\s*,\\s*"))) { try { - addresses.addAll(Arrays.asList(requestLookup(address))); + final InetAddress[] requestLookup = requestLookup(address); + if (requestLookup != null) { + addresses.addAll(Arrays.asList(requestLookup)); + } } catch (UnknownHostException e) { log.warn("Couldn't resolve static address {} for host {}", address, host, e); } @@ -239,25 +242,35 @@ ExtendedResolver extendedResolver = getResolver(); if (extendedResolver != null) { if(extendedResolver.getResolvers().length > 0) { - try { - Lookup lookup = new Lookup(host, Type.A); - lookup.setCache(lookupCache); - if (timeoutMs > 0) { - resolver.setTimeout(timeoutMs / 1000, timeoutMs % 1000); + for (Resolver currentResolver : extendedResolver + .getResolvers()) { + log.debug("Use custom resolver: {}", currentResolver); + try { + Lookup lookup = new Lookup(host, Type.A); + lookup.setCache(lookupCache); + if (timeoutMs > 0) { + currentResolver.setTimeout(timeoutMs / 1000, + timeoutMs % 1000); + } + lookup.setResolver(currentResolver); + Record[] records = lookup.run(); + if (records == null || records.length == 0) { + log.debug("Lookup of host {} failed with {}", + host, currentResolver); + continue; + } + addresses = new InetAddress[records.length]; + for (int i = 0; i < records.length; i++) { + addresses[i] = ((ARecord) records[i]) + .getAddress(); + } + } catch (TextParseException tpe) { + log.debug("Failed to create Lookup object: " + tpe); } - lookup.setResolver(resolver); - Record[] records = lookup.run(); - if (records == null || records.length == 0) { - throw new UnknownHostException("Failed to resolve host name: " + host); - } - addresses = new InetAddress[records.length]; - for (int i = 0; i < records.length; i++) { - addresses[i] = ((ARecord) records[i]).getAddress(); - } - } catch (TextParseException tpe) { - log.debug("Failed to create Lookup object: " + tpe); + return addresses; } - return addresses; + throw new UnknownHostException( + "Failed to resolve host name: " + host); } } else { throw new UnknownHostException("Could not resolve host:"+host