summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTausif Rahman <tausif.rahman@mongodb.com>2022-11-17 22:34:21 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-11-28 16:34:37 +0000
commitb6ff8ad7ad404430b05353fb6a2f8b1c01005ea3 (patch)
tree92149ba934a3dd7167b025615a6c4d1b508c9e14
parent833d66db106dd727ab84790b255b2d8ae21d9868 (diff)
downloadmongo-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.py12
-rw-r--r--buildscripts/tests/tooling_metrics/test_tooling_metrics_utils.py14
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)