Removing the fetch context expiry timer uncovered latent bugs
After the dispatch code was reworked to use netmgr, the lifetime expiry timer for the fetch context was replaced with in-band netmgr timeouts. Unfortunately, it turned out that the lifetime expiry timer served as a last-resort measure for breaking various deadlocks and hangs which could be triggered in pathological resolution scenarios (#3033 and #3037 are examples of these).
Now that the fetches are never cleaned up after in some scenarios,
named
may not respond at all to certain queries and hang on shutdown,
which is not acceptable for a stable release.
Since the bugs uncovered are neither new nor easy to fix, it was decided that the lifetime expiry timer should be revived until we figure out all known preexisting glitches in resolver code. The current plan is for the lifetime expiry timer to be present in BIND 9.18, with the hope of removing it before the release of BIND 9.20.