From bb50a6c7ff75d7b6350b79c47fb0037b6ca96891 Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Mon, 12 Nov 2018 15:11:23 -0800 Subject: [PATCH] use predictable id in service registry so that when warcprox restarts it replaces the obsolete entry --- setup.py | 2 +- tests/test_warcprox.py | 3 +++ warcprox/controller.py | 5 ++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index a948dec..7b068f6 100755 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ except: setuptools.setup( name='warcprox', - version='2.4b3.dev190', + version='2.4b3.dev191', description='WARC writing MITM HTTP/S proxy', url='https://github.com/internetarchive/warcprox', author='Noah Levitt', diff --git a/tests/test_warcprox.py b/tests/test_warcprox.py index 031db85..a69553d 100755 --- a/tests/test_warcprox.py +++ b/tests/test_warcprox.py @@ -1576,8 +1576,11 @@ def test_svcreg_status(warcprox_): 'rates_15min', 'active_requests','start_time','urls_processed', 'warc_bytes_written', 'postfetch_chain', 'earliest_still_active_fetch_start',} + assert status['id'] == 'warcprox:%s:%s' % ( + socket.gethostname(), warcprox_.proxy.server_port) assert status['role'] == 'warcprox' assert status['version'] == warcprox.__version__ + assert status['host'] == socket.gethostname() assert status['port'] == warcprox_.proxy.server_port assert status['pid'] == os.getpid() assert status['threads'] == warcprox_.proxy.pool._max_workers diff --git a/warcprox/controller.py b/warcprox/controller.py index 1eed21b..80eca1c 100644 --- a/warcprox/controller.py +++ b/warcprox/controller.py @@ -36,6 +36,7 @@ import functools import doublethink import importlib import queue +import socket class Factory: @staticmethod @@ -319,13 +320,15 @@ class WarcproxController(object): status_info = self.status_info else: status_info = { + 'id': 'warcprox:%s:%s' % ( + socket.gethostname(), self.proxy.server_port), 'role': 'warcprox', 'version': warcprox.__version__, 'ttl': self.HEARTBEAT_INTERVAL * 3, + 'host': socket.gethostname(), 'port': self.proxy.server_port, } status_info.update(self.proxy.status()) - self.status_info = self.service_registry.heartbeat(status_info) self.logger.trace('status in service registry: %s', self.status_info)