From a32b67915a9036b2b579d68cbb8d4acaf22194d3 Mon Sep 17 00:00:00 2001 From: Ivan Daschinsky Date: Tue, 14 Feb 2023 11:45:07 +0300 Subject: [PATCH] IGNITE-18788 Fix firing query events only if debug level logger enabled. --- .github/workflows/pr_check.yml | 4 ++-- pyignite/queries/query.py | 29 +++++++++++++++-------------- tests/common/test_query_listener.py | 12 ++++++++++++ tox.ini | 6 ++++-- 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 2330e1d..8ceefb7 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -42,7 +42,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v4.3.0 with: python-version: ${{ matrix.cfg.python}} - name: Install Apache Ignite @@ -54,7 +54,7 @@ jobs: - name: Install tox run: | - pip install tox + pip install tox==3.28.0 - name: Run tests run: | diff --git a/pyignite/queries/query.py b/pyignite/queries/query.py index c141b26..6ac16d8 100644 --- a/pyignite/queries/query.py +++ b/pyignite/queries/query.py @@ -247,26 +247,27 @@ def _on_query_started(self, conn): self.op_code, _get_op_code_name(self.op_code)) def _on_query_finished(self, conn, result=None, err=None): - if logger.isEnabledFor(logging.DEBUG): - dur_ms = _sec_to_millis(time.monotonic() - self._start_ts) - if result and result.status != 0: - err = result.message - if err: + dur_ms = _sec_to_millis(time.monotonic() - self._start_ts) + if result and result.status != 0: + err = result.message + if err: + if logger.isEnabledFor(logging.DEBUG): logger.debug("Failed to perform query(query_id=%d, op_type=%s, host=%s, port=%d, node_id=%s) " "in %d ms: %s", self.query_id, _get_op_code_name(self.op_code), conn.host, conn.port, conn.uuid, dur_ms, err) - if self._enabled_query_listener(conn): - self._event_listener(conn).publish_query_fail(conn.host, conn.port, conn.uuid, self.query_id, - self.op_code, _get_op_code_name(self.op_code), - dur_ms, err) - else: + if self._enabled_query_listener(conn): + self._event_listener(conn).publish_query_fail(conn.host, conn.port, conn.uuid, self.query_id, + self.op_code, _get_op_code_name(self.op_code), + dur_ms, err) + else: + if logger.isEnabledFor(logging.DEBUG): logger.debug("Finished query(query_id=%d, op_type=%s, host=%s, port=%d, node_id=%s) " "successfully in %d ms", self.query_id, _get_op_code_name(self.op_code), conn.host, conn.port, conn.uuid, dur_ms) - if self._enabled_query_listener(conn): - self._event_listener(conn).publish_query_success(conn.host, conn.port, conn.uuid, self.query_id, - self.op_code, _get_op_code_name(self.op_code), - dur_ms) + if self._enabled_query_listener(conn): + self._event_listener(conn).publish_query_success(conn.host, conn.port, conn.uuid, self.query_id, + self.op_code, _get_op_code_name(self.op_code), + dur_ms) class ConfigQuery(Query): diff --git a/tests/common/test_query_listener.py b/tests/common/test_query_listener.py index 8310117..85d1550 100644 --- a/tests/common/test_query_listener.py +++ b/tests/common/test_query_listener.py @@ -36,6 +36,18 @@ def on_query_success(self, event): events.append(event) +@pytest.fixture(autouse=True) +def setup_logger(): + from pyignite.queries.query import logger + + try: + # Disable logger in order to test events with disabled debug logging. + logger.disabled = True + yield logger + finally: + logger.disabled = False + + @pytest.fixture def client(): client = Client(event_listeners=[QueryRouteListener()]) diff --git a/tox.ini b/tox.ini index d68f02e..2fe65b4 100644 --- a/tox.ini +++ b/tox.ini @@ -29,11 +29,13 @@ max-line-length=120 ignore = F401,F403,F405,F821 [testenv:codestyle] -basepython = python3.8 +basepython = python3.11 commands = flake8 [testenv] -passenv = TEAMCITY_VERSION IGNITE_HOME +passenv = + TEAMCITY_VERSION + IGNITE_HOME envdir = {homedir}/.virtualenvs/pyignite-{envname} deps = -r ./requirements/install.txt