From 2e9d99b1607fa7baad8b41e4854f4d79b1c6c7cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Carneiro?= Date: Mon, 6 Dec 2021 14:42:07 -0300 Subject: [PATCH 1/2] fix: daemon error on status timeout (#106) --- gateways/clients/hathor_core_client.py | 21 ++++++++++++++++++++- usecases/collect_nodes_statuses.py | 7 +++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/gateways/clients/hathor_core_client.py b/gateways/clients/hathor_core_client.py index 8458420f..c029388e 100644 --- a/gateways/clients/hathor_core_client.py +++ b/gateways/clients/hathor_core_client.py @@ -30,6 +30,7 @@ def __init__(self, domain: Optional[str] = None) -> None: :type domain: str, optional """ self.domain = domain or HATHOR_CORE_DOMAIN + self.log = logger.new(client="async") async def get(self, path: str, callback: Callable[[dict], None], params: Optional[dict] = None) -> None: """Make a get request async @@ -46,8 +47,14 @@ async def get(self, path: str, callback: Callable[[dict], None], params: Optiona try: async with aiohttp.ClientSession() as session: async with session.get(url, params=params) as response: + self.log.info( + "hathor_core_response", + path=path, + status=response.status, + body=await response.text()) callback(await response.json()) except Exception as e: + self.log.error("hathor_core_error", path=path, error=repr(e)) callback({'error': repr(e)}) @@ -59,6 +66,7 @@ class HathorCoreClient: """ def __init__(self, domain: Optional[str] = None) -> None: self.domain = domain or HATHOR_CORE_DOMAIN + self.log = logger.new(client="sync") def get(self, path: str, params: Optional[dict] = None, **kwargs: Any) -> Optional[dict]: """Make a get request @@ -77,11 +85,22 @@ def get(self, path: str, params: Optional[dict] = None, **kwargs: Any) -> Option try: response = requests.get(url, params=params, **kwargs) if response.status_code != 200: - logger.warning(f'Hathor Core Unexpected response ({response.status_code}): {response.text}') + self.log.warning( + "hathor_core_error", + path=path, + status=response.status_code, + body=response.text) return None + self.log.info( + "hathor_core_response", + path=path, + status=response.status_code, + body=response.text) return response.json() except requests.ReadTimeout: + self.log.error("hathor_core_error", error="timeout", path=path) raise HathorCoreTimeout('timeout') except Exception as e: + self.log.error("hathor_core_error", error=repr(e), path=path) return {'error': repr(e)} diff --git a/usecases/collect_nodes_statuses.py b/usecases/collect_nodes_statuses.py index ec8abbf9..60f5f804 100644 --- a/usecases/collect_nodes_statuses.py +++ b/usecases/collect_nodes_statuses.py @@ -1,16 +1,20 @@ from typing import Optional from common.configuration import HATHOR_NODES +from common.logging import get_logger from domain.network.node import Node from gateways.clients.hathor_core_client import HathorCoreAsyncClient from gateways.node_gateway import NodeGateway +logger = get_logger() + class CollectNodesStatuses: """ Usecase class to collect nodes statuses """ def __init__(self, node_gateway: Optional[NodeGateway] = None) -> None: self.node_gateway = node_gateway or NodeGateway() + self.log = logger.new() async def collect(self) -> None: """Collect nodes statuses and send them to data aggregator @@ -21,5 +25,8 @@ async def collect(self) -> None: await node_gateway.get_node_status_async(self._send) def _send(self, data: dict) -> None: + if 'error' in data: + self.log.warning("collect_status_error", error=data['error']) + return node = Node.from_status_dict(data) self.node_gateway.send_node_to_data_aggregator(node) From dfc287e0df163ed08140bccf04ebc45d147cb888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Carneiro?= Date: Mon, 13 Dec 2021 17:50:37 -0300 Subject: [PATCH 2/2] chore: bump version to v0.1.14 (#107) --- package-lock.json | 2 +- package.json | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89d4572c..1e3c0fed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hathor-explorer-service", - "version": "0.1.13", + "version": "0.1.14", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3c5260ff..119f9820 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hathor-explorer-service", - "version": "0.1.13", + "version": "0.1.14", "description": "Hathor Explorer Service Serverless deps", "dependencies": { "serverless": "^2.44.0", diff --git a/pyproject.toml b/pyproject.toml index bca97ae2..314c49ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hathor-explorer-service" -version = "0.1.13" +version = "0.1.14" description = "" authors = ["Hathor Labs "] license = "MIT"