diff options
author | Tausif Rahman <tausif.rahman@mongodb.com> | 2022-11-17 22:34:21 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-11-28 16:34:37 +0000 |
commit | b6ff8ad7ad404430b05353fb6a2f8b1c01005ea3 (patch) | |
tree | 92149ba934a3dd7167b025615a6c4d1b508c9e14 | |
parent | 833d66db106dd727ab84790b255b2d8ae21d9868 (diff) | |
download | mongo-b6ff8ad7ad404430b05353fb6a2f8b1c01005ea3.tar.gz |
SERVER-71411 Replace asyncio with explicit timeouts in metrics collection
(cherry picked from commit 93b1775dd99dfbb8b0f083e68fbf911d3d4eaf12)
-rw-r--r-- | buildscripts/metrics/tooling_metrics_utils.py | 12 | ||||
-rw-r--r-- | buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py | 14 |
2 files changed, 4 insertions, 22 deletions
diff --git a/buildscripts/metrics/tooling_metrics_utils.py b/buildscripts/metrics/tooling_metrics_utils.py index 4a99f90c0f0..29e4e475bc9 100644 --- a/buildscripts/metrics/tooling_metrics_utils.py +++ b/buildscripts/metrics/tooling_metrics_utils.py @@ -1,6 +1,5 @@ import logging import os -import asyncio from typing import Optional from git import Repo import pymongo @@ -24,6 +23,7 @@ def _get_internal_tooling_metrics_client(): serverSelectionTimeoutMS=1000, connectTimeoutMS=1000, waitQueueTimeoutMS=1000, + retryWrites=False, ) @@ -61,7 +61,7 @@ def should_collect_metrics() -> bool: return _is_virtual_workstation() and not _has_metrics_opt_out() -async def _save_metrics(metrics: ToolingMetrics) -> None: +def _save_metrics(metrics: ToolingMetrics) -> None: """Save tooling metrics data.""" client = _get_internal_tooling_metrics_client() client.metrics.tooling_metrics.insert_one(metrics.dict()) @@ -70,12 +70,8 @@ async def _save_metrics(metrics: ToolingMetrics) -> None: def save_tooling_metrics(tooling_metrics: ToolingMetrics) -> None: """Persist tooling metrics data to MongoDB Internal Atlas Cluster.""" try: - asyncio.run(asyncio.wait_for(_save_metrics(tooling_metrics), timeout=1.0)) - except asyncio.TimeoutError as exc: - logger.warning( - "%s\nTimeout: Tooling metrics collection is not available -- this is a non-issue.\nIf this message persists, feel free to reach out to #server-development-platform", - exc) + _save_metrics(tooling_metrics) except Exception as exc: # pylint: disable=broad-except logger.warning( - "%s\nUnexpected: Tooling metrics collection is not available -- this is a non-issue.\nIf this message persists, feel free to reach out to #server-development-platform", + "\n%s\n\nUnexpected: Tooling metrics collection is not available -- this is a non-issue.\nIf this message persists, feel free to reach out to #server-development-platform", exc) diff --git a/buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py b/buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py index 0b64c6bb05a..b540a529d78 100644 --- a/buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py +++ b/buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py @@ -16,11 +16,6 @@ import buildscripts.metrics.tooling_metrics_utils as under_test TEST_INTERNAL_TOOLING_METRICS_HOSTNAME = 'mongodb://testing:27017' CURRENT_DATE_TIME = datetime(2022, 10, 4) - -async def extended_sleep(arg): - await asyncio.sleep(2) - - # Metrics collection is not supported for Windows if os.name == "nt": sys.exit() @@ -46,15 +41,6 @@ class TestSaveToolingMetrics(unittest.TestCase): client = pymongo.MongoClient(host=TEST_INTERNAL_TOOLING_METRICS_HOSTNAME) assert not client.metrics.tooling_metrics.find_one() - @mongomock.patch(servers=((TEST_INTERNAL_TOOLING_METRICS_HOSTNAME), )) - @patch("buildscripts.metrics.tooling_metrics_utils._save_metrics", side_effect=extended_sleep) - def test_timeout_caught(self, mock_save_metrics): - with self.assertLogs('tooling_metrics_utils') as cm: - under_test.save_tooling_metrics(ToolingMetrics.get_resmoke_metrics(CURRENT_DATE_TIME)) - assert "Timeout: Tooling metrics collection is not available" in cm.output[0] - client = pymongo.MongoClient(host=TEST_INTERNAL_TOOLING_METRICS_HOSTNAME) - assert not client.metrics.tooling_metrics.find_one() - class TestIsVirtualWorkstation(unittest.TestCase): @patch("buildscripts.metrics.tooling_metrics_utils._toolchain_exists", return_value=False) |