open-webui/backend/open_webui
Claude 4c45ab659a
fix(db): aiosqlite shim — bytecode fallback when source inspection fails
Address PR review findings 1 & 2 on the detection heuristic:

The previous gate relied solely on `inspect.getsource()` matching
the substring `self._connection.stop`. Two failure modes:

  1. Source-unavailable builds — zipped distributions, pyc-only
     installs, frozen runtimes — return OSError from
     `inspect.getsource`, so the gate silently skipped patching and
     the multi-page `terminate_force_close() not implemented`
     tracebacks reappeared. Hard-to-diagnose because startup looks
     successful.
  2. Brittle text matching — minor upstream formatting changes to
     the same buggy logic could bypass the substring check.

Factor the detection into `_looks_buggy(original)` with two signals
in order of preference:

  * Source text inspection (precise, obvious).
  * Bytecode `co_names` inspection — works on every CPython build
    exposing `__code__`. Any function that does
    `self._connection.stop` puts both `_connection` and `stop`
    into `co_names`, regardless of whitespace or refactoring.

If neither inspection succeeds, patch defensively: the user
explicitly reported the noisy ERROR behaviour, so a
possibly-redundant shim beats silently restoring it.

Per user direction the third reviewer suggestion (regression test
coverage) is not added in this PR.

https://claude.ai/code/session_01JSr4NZSskEUQvoJnavVXh8
2026-04-14 12:57:26 +00:00
..
data refac: mv backend files to /open_webui dir 2024-09-04 16:54:48 +02:00
internal fix(db): aiosqlite shim — bytecode fallback when source inspection fails 2026-04-14 12:57:26 +00:00
migrations refac 2026-04-01 18:26:46 -05:00
models refac 2026-04-13 21:29:03 -05:00
retrieval refac 2026-04-13 16:03:36 -05:00
routers refac 2026-04-13 21:29:03 -05:00
socket fix: invalidate stale Socket.IO sessions on role change and user deletion (#23642) 2026-04-12 16:19:38 -05:00
static refac 2026-03-23 23:39:52 -05:00
storage refac 2026-04-12 19:08:30 -05:00
test refac 2026-03-17 17:58:01 -05:00
tools chore: format 2026-04-12 22:11:10 -05:00
utils refac 2026-04-14 01:17:39 -05:00
__init__.py refac (#22987) 2026-03-24 15:41:26 -05:00
alembic.ini fix: Alembic CLI commands from failing 2025-08-15 04:17:47 -04:00
config.py refac 2026-04-14 00:07:50 -05:00
constants.py refac 2026-04-13 14:08:58 -05:00
env.py refac 2026-04-13 16:25:44 -05:00
functions.py refac: async db 2026-04-12 14:22:11 -05:00
main.py refac 2026-04-14 00:07:50 -05:00
tasks.py refac 2026-03-17 17:58:01 -05:00