First go at deferred re-resolve for peers

This commit is contained in:
Simon 2021-08-30 16:38:57 +01:00
parent 6ead47ee81
commit ae393bc66d
1 changed files with 14 additions and 0 deletions

View File

@ -40,6 +40,7 @@ from collections import deque
from twisted.internet.protocol import DatagramProtocol, Factory, Protocol from twisted.internet.protocol import DatagramProtocol, Factory, Protocol
from twisted.protocols.basic import NetstringReceiver from twisted.protocols.basic import NetstringReceiver
from twisted.internet import reactor, task from twisted.internet import reactor, task
from twisted.names import client
# Other files we pull from -- this is mostly for readability and segmentation # Other files we pull from -- this is mostly for readability and segmentation
import log import log
@ -356,6 +357,11 @@ class HBSYSTEM(DatagramProtocol):
self._stats['NUM_OUTSTANDING'] = 0 self._stats['NUM_OUTSTANDING'] = 0
self._stats['PING_OUTSTANDING'] = False self._stats['PING_OUTSTANDING'] = False
self._stats['CONNECTION'] = 'RPTL_SENT' self._stats['CONNECTION'] = 'RPTL_SENT'
if self._stats['DNS_TIME'] < (time() - 1):
self._stats['DNS_TIME'] = time()
_d = client.getHostByName(self._config['_MASTER_IP'])
_d.addCallback(self.updateSockaddr)
_d.addErrback(self,_d)
self.send_master(b''.join([RPTL, self._config['RADIO_ID']])) self.send_master(b''.join([RPTL, self._config['RADIO_ID']]))
logger.info('(%s) Sending login request to master %s:%s', self._system, self._config['MASTER_IP'], self._config['MASTER_PORT']) logger.info('(%s) Sending login request to master %s:%s', self._system, self._config['MASTER_IP'], self._config['MASTER_PORT'])
# If we are connected, sent a ping to the master and increment the counter # If we are connected, sent a ping to the master and increment the counter
@ -364,6 +370,14 @@ class HBSYSTEM(DatagramProtocol):
logger.debug('(%s) RPTPING Sent to Master. Total Sent: %s, Total Missed: %s, Currently Outstanding: %s', self._system, self._stats['PINGS_SENT'], self._stats['PINGS_SENT'] - self._stats['PINGS_ACKD'], self._stats['NUM_OUTSTANDING']) logger.debug('(%s) RPTPING Sent to Master. Total Sent: %s, Total Missed: %s, Currently Outstanding: %s', self._system, self._stats['PINGS_SENT'], self._stats['PINGS_SENT'] - self._stats['PINGS_ACKD'], self._stats['NUM_OUTSTANDING'])
self._stats['PINGS_SENT'] += 1 self._stats['PINGS_SENT'] += 1
self._stats['PING_OUTSTANDING'] = True self._stats['PING_OUTSTANDING'] = True
def updateSockaddr(self,ip):
self._config['MASTER_IP'] = ip
self._config['MASTER_SOCKADDR'] = (ip, self._config['MASTER_PORT'])
logger.debug('(%s) hostname resolution performed',self._system)
def updateSockaddr_errback(self,d):
logger.debug('(%s) hostname resolution error',self._system)
def send_peers(self, _packet): def send_peers(self, _packet):
for _peer in self._peers: for _peer in self._peers: