Skip to content

Commit 0c1a543

Browse files
author
梁钧
committed
optimize dns resolution logic
1 parent 559e526 commit 0c1a543

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

python-client/pypegasus/pgclient.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
META_CHECK_INTERVAL = 2 # s
5454
MAX_TIMEOUT_THRESHOLD = 5 # times
5555
MAX_META_QUERY_THRESHOLD = 1 # times
56-
MAX_SOLVED_THRESHOLD = 1 # times
5756

5857
class BaseSession(object):
5958

@@ -250,7 +249,6 @@ def __init__(self, table_name, timeout):
250249
self.addr_list = []
251250
self.host_ports = []
252251
self.query_times = 0
253-
self.solved_times = 0
254252

255253
# validate if the given string is a valid IP address
256254
def is_valid_ip(self, address):
@@ -303,7 +301,7 @@ def extract_ips(result, record_type):
303301
ip_str = socket.inet_ntop(socket.AF_INET6, ip6_bytes)
304302
ips.append(ip_str)
305303
else:
306-
print(f"Invalid IPv6 bytes length: {len(ip6_bytes)}")
304+
logger.error('Invalid IPv6 bytes length: %s', len(ip6_bytes))
307305
else:
308306
ips.append(str(answer.payload.address))
309307
return ips
@@ -369,13 +367,12 @@ def resolve_host(self, err):
369367
new_addr_list.append((ip, port))
370368
logger.info("resolved hostname %s to IP type:%s, addr:%s", host_port.host, host_port.type, ips)
371369
except Exception as e:
372-
logger.error("failed to resolve hostname %s: %s", host, e)
373-
continue
370+
logger.error("failed to resolve hostname %s: %s", host, e)
371+
continue
374372

375373
if not new_addr_list or new_addr_list == self.addr_list:
376374
returnValue(None)
377-
378-
self.solved_times = 0
375+
379376
stale_sessions = []
380377
for rpc_addr in list(self.session_dict):
381378
ip, port = rpc_addr.to_ip_port()
@@ -410,11 +407,10 @@ def got_results(self, res):
410407
# all meta server queries failed, maybe need to re-resolve hostname
411408
# to get new IP addresses
412409
self.query_times += 1
413-
logger.error('query partition info err(%s) table: %s, query_times: %d, err: %s',
414-
res.err.errno, self.name, self.query_times, res)
410+
logger.error('query partition info err. table: %s, query_times: %d, err: %s',
411+
self.name, self.query_times, res)
415412

416-
if self.query_times >= MAX_META_QUERY_THRESHOLD and self.solved_times <= MAX_SOLVED_THRESHOLD:
417-
self.solved_times += 1
413+
if self.query_times >= MAX_META_QUERY_THRESHOLD:
418414
self.query_times = 0
419415
raise RuntimeError("all meta server queries failed, try to re-resolve hostname")
420416

@@ -802,7 +798,7 @@ def init(self):
802798
d = self.meta_session_manager.add_meta_server(host_port)
803799
deferreds.append(d)
804800
results = yield defer.DeferredList(deferreds, consumeErrors=True)
805-
if not any(success for success, _ in results):
801+
if not any(success for _, success in results):
806802
raise Exception("all meta servers failed to initialize")
807803

808804
dlist = self.meta_session_manager.query()

0 commit comments

Comments
 (0)