mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-10 18:59:56 +00:00
One word. server.py's TuningProviderRegistry.get_merged():
except Exception:
- logger.exception("tuning provider %r raised during get_merged()", provider_id)
+ log.exception("tuning provider %r raised during get_merged()", provider_id)
There is no `logger` in server.py — the module logger is `log`. So the handler written to
swallow-and-report a bad provider instead raised NameError from inside the except, and that
NameError propagated out of get_merged().
The effect was the exact OPPOSITE of what the handler is for: one misbehaving plugin took
the whole merged-tunings call down for every other provider, AND the traceback named the
wrong problem ("name 'logger' is not defined" rather than the provider that actually blew
up). Doubly silent: nothing was ever logged either, because the logging call was the thing
that crashed.
Found by pyflakes while carving server.py (R3b). It survived because NOTHING exercised the
failure path — no test ever had a provider raise. That is the whole reason this class of
bug is invisible: it lives only on error paths, so the suite is green and the feature is
broken exactly when it matters.
tests/test_tuning_provider_isolation.py is that path:
* a raising provider must not lose the HEALTHY providers' tunings, nor the defaults
* and the failure must actually be LOGGED — swallowing is only acceptable if it reports
Bite-tested: restoring `logger` fails both.
(The log assertion attaches caplog's handler to the feedBack logger directly. It sets
propagate=False, so pytest's root capture sees nothing from it — test_plugins.py has a
capture_logger() for this, but it is not importable here: pyproject pins pythonpath to
[".", "lib"], so `tests` is not a package. Three lines beat churning 21 call sites in an
unrelated file to convert that helper into a fixture.)
pytest 2410, pyflakes 0 undefined names in server.py, Codex 0.
Closes #899
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
70dbe45e27
commit
6b8f79dd9a
@@ -427,7 +427,12 @@ class TuningProviderRegistry:
|
||||
for name, freqs in names.items():
|
||||
result[instrument][name] = [round(f * scale, 4) for f in freqs]
|
||||
except Exception:
|
||||
logger.exception("tuning provider %r raised during get_merged()", provider_id)
|
||||
# `log`, not `logger` — there is no `logger` in this module. This handler
|
||||
# exists so ONE bad provider cannot break tunings for everyone; with the
|
||||
# wrong name it raised NameError from inside the except and did precisely
|
||||
# what it was written to prevent. See #899 and
|
||||
# tests/test_tuning_provider_isolation.py.
|
||||
log.exception("tuning provider %r raised during get_merged()", provider_id)
|
||||
return result
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user