apache / apache/jmeter

DNS Cache Manager doesn't check all DNS servers for a match and doesn't honor Clear Cache After Each Iteration setting

Open
#6,238 2 comments 0 reactions 0 assignees View on GitHub
defect to-triage
Dominant language
Java
Stars
9.5k
Forks
2.3k
Avg merge
1d 22h
Merged PRs (30d)
5

Description

### Expected behavior

I have observed two different problems with DNS Cache Manager:

1. DNS Cache Manager takes a list of DNS servers and round-robins through them for every lookup. However, for any given lookup, if the DNS server returns a failure, cache manager fails the request instead of checking the next server. This is problematic while trying to use a list of zoned authoritative servers as every server may not have all the records. This is in contrast to behavior of say `/etc/resolv.conf` in Linux which checks the next server in the list until it finds a match. I checked the code and this is happening because DNS cache manager is using dnsjava's `ExtendedResolver` under the hood which only tries a different server if there is an `IOException` while making request to the current server. Even if the current server refuses the request without throwing an exception, `ExtendedResolver` returns an empty result without trying a different server.

2. DNS Cache Manager has a setting to Clear Cache After Each Iteration. When enabled, it clears the JMeter thread-local cache before starting the next iteration. However, it doesn't clear the DNS resolver's cache so the result could still be coming from a cache. To test this, I created a simple test with 10 iterations of a http request and enabled the clear cache setting and captured the DNS requests using Wireshark. The expectation is that there'd be 10 calls to DNS, however there is only 1 call to DNS and remaining 9 requests are using the cached value.

### Actual behavior

_No response_

### Steps to reproduce the problem

Any JMeter test with a DNS cache manager would reproduce the issue.

### JMeter Version

5.5

### Java Version

8

### OS Version

Windows 11

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.