szmarczak/cacheable-lookup

fallbackDuration behaviour doesn't match docs

Opened this issue · 1 comments

fallbackDuration is documented as:

When the DNS server responds with ENOTFOUND or ENODATA and the OS reports that the entry is available, it will use dns.lookup(...) directly for the requested hostnames for the specified amount of time (in seconds).

In reality, it's not a cache time, it's a periodic reset frequency:

this._hostnamesToFallback = new Set();
if (fallbackDuration < 1) {
this._fallback = false;
} else {
this._fallback = true;
const interval = setInterval(() => {
this._hostnamesToFallback.clear();
}, fallbackDuration * 1000);

For example, if it's set to 1 hour, and then 55 minutes after creating the CacheableLookup instance a hostname lookup fails, the fallback usage will only be cached for 5 minutes (the time until the next reset).

This isn't a big problem for me particularly right now, just something I noticed.

Good spot! I must've overlooked this. Will fix this ASAP.