<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap:break-word"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto"><div id="bloop_customfont" style="margin:0px">Hi Remi,</div><div id="bloop_customfont" style="margin:0px"><br></div><div id="bloop_customfont" style="margin:0px">I assumed the following while working with newPacketCache():</div><div id="bloop_customfont" style="margin:0px">- temporaryFailureTTL - if we can’t get response from any backend, cache for this long</div><div id="bloop_customfont" style="margin:0px">- staleTTL - when no backend servers are reachable, serve for this long from cache (what I assumed my case would be)</div><div><br></div><div>and with setStaleCacheEntriesTTL() to eventually override TTL for stale entires. What is confusing is “use expired entires” on [1] which I cannot envision at all since they are purged from packet cache when they expire.</div><div><br></div><div>Basically what I want(ed) to accomplish is to give me some time in case of a problem regardless of what TTL someone set for the zone/record. In case every backend server is unavailable (broken vpn for example), dnsdist would still serve until it’s been fixed. I would love to use anycast for this kind of fault tolerance but it’s currently out of my reach so I’m trying a poor man’s packet cache approach.</div><div><br></div><div>Maybe an option not to purge entires from cache if there is no backend server available would be beneficial for this use case, but what I currently envision as a “fix” would be to when failure to all backens happen, and it’s detected, to somehow connect to console remotely and set setCacheCleaningPercentage(0), and revert once we have working backends.</div><div><br></div><div>Do you have any insights on how to accomplish this at it’s current state, or maybe if this would be viable addition to dnsdist?</div><div id="bloop_sign_1520592999856396032" class="bloop_sign"></div><div><br></div>[1] <a href="https://dnsdist.org/guides/cache.html">https://dnsdist.org/guides/cache.html</a><div><br></div><div>Thanks,</div><div>Nick</div></div> <br> <div id="bloop_sign_1520594679698241024" class="bloop_sign"></div> <br><p class="airmail_on">On March 9, 2018 at 9:51:20 AM, Remi Gacogne (<a href="mailto:remi.gacogne@powerdns.com">remi.gacogne@powerdns.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>On 03/08/2018 07:08 PM, Nemanja Zeljkovic wrote:
<br>> I think I narrowed this down to cache cleanup. Specifically:
<br>> <a href="https://github.com/PowerDNS/pdns/blob/master/pdns/dnsdist.cc#L1713">https://github.com/PowerDNS/pdns/blob/master/pdns/dnsdist.cc#L1713</a>
<br>>  
<br>> default is 60, my TTL was 60 so that’s why I got about two minutes of
<br>> “availability”. Setting setCacheCleaningPercentage to 0 seems to do what
<br>> I want, however that would mean cache will not get expunged at all. Does
<br>> this have some negative side effects? i.e if we hit the limit, and new
<br>> query needs to go in, what will happen?
<br>
<br>Yes, it would mean that:
<br>
<br>- once the cache is full, no new answer can be cached, ever ;
<br>- the cache would continue to serve cached answers indefinitely, even if
<br>they change upstream.
<br>
<br>I don't understand what you are trying to achieve here, would you mind
<br>telling us a bit more about what your goals are? Why would you want to
<br>keep answers cached for longer than their TTL?
<br>
<br>Regards,
<br>
<br>Remi
<br>
<br>_______________________________________________<br>dnsdist mailing list<br><a href="mailto:dnsdist@mailman.powerdns.com">dnsdist@mailman.powerdns.com</a><br><a href="https://mailman.powerdns.com/mailman/listinfo/dnsdist">https://mailman.powerdns.com/mailman/listinfo/dnsdist</a><br></div></div></span></blockquote></body></html>