From 01f2ad7170df31ac9d610208f0444a376ff72dee Mon Sep 17 00:00:00 2001 From: Filipp Ozinov Date: Mon, 7 Sep 2020 23:32:20 +0300 Subject: [PATCH] Fixed dns resolver bug after reboot, #119 --- pysyncobj/dns_resolver.py | 2 +- test_syncobj.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pysyncobj/dns_resolver.py b/pysyncobj/dns_resolver.py index 13fe7ea..0f864fc 100644 --- a/pysyncobj/dns_resolver.py +++ b/pysyncobj/dns_resolver.py @@ -18,7 +18,7 @@ def setTimeouts(self, cacheTime, failCacheTime): def resolve(self, hostname): currTime = monotonicTime() - cachedTime, ips = self.__cache.get(hostname, (0, [])) + cachedTime, ips = self.__cache.get(hostname, (-self.__failCacheTime-1, [])) timePassed = currTime - cachedTime if (timePassed > self.__cacheTime) or (not ips and timePassed > self.__failCacheTime): prevIps = ips diff --git a/test_syncobj.py b/test_syncobj.py index 6939724..5889554 100755 --- a/test_syncobj.py +++ b/test_syncobj.py @@ -6,6 +6,7 @@ import threading import sys import pysyncobj.pickle as pickle +import pysyncobj.dns_resolver as dns_resolver if sys.version_info >= (3, 0): xrange = range @@ -2006,3 +2007,10 @@ def test_zeroDeployVersions(): assert 'someMethod' not in o1._methodToID assert 'thirdMethod' not in o1._methodToID assert 'lastMethod' not in o1._methodToID + + +def test_dnsResolverBug(monkeypatch): + monkeypatch.setattr(dns_resolver, "monotonicTime", lambda: 0.0) + resolver = dns_resolver.DnsCachingResolver(600, 30) + ip = resolver.resolve('localhost') + assert ip == '127.0.0.1'