Markus Heiser
26801e92af
[fix] sqlitedb: create DB Schema (DDL) during app initialization (hardening) ( #6187 )
...
The initialization of the DB schema ("base schema") has so far been done on
demand, which causes race conditions with competing threads and processes.
The DDL statements for creating the "base schema" are now executed as part of
the initialization of the app.
Further improvements were made to harden the database applications:
- Wikidata & Radio-Browser engine perform their initialization only once (so far
the initialization was carried out in each thread/process).
- If multiple processes try to set DB's WAL mode when opening the DB at the same
time, this usually leads to another race condition, which is now also caught.
Related:
- https://github.com/searxng/searxng/issues/6181#issuecomment-4586705
Closes : #6181
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2026-06-10 15:48:49 +02:00
Markus Heiser
70de3cc561
Revert "[fix] no such table during engine init ( #6185 )" ( #6215 )
...
This reverts commit 9d49a9f344 .
2026-06-07 09:23:35 +02:00
Brock Vojkovic
9d49a9f344
[fix] no such table during engine init ( #6185 )
2026-06-07 06:04:12 +02:00
Markus Heiser
2f0d96b8bc
[fix] sqlitedb: DB connector -- unset isolation_level
...
A Connection object can be used as a context manager that automatically commits
or rolls back open transactions when leaving the body of the context manager.
If the connection attribute ``isolation_level`` is **not** ``None``, new
transactions are implicitly opened before ``execute()`` and ``executemany()``
executes SQL- INSERT, UPDATE, DELETE, or REPLACE statements [1].
The old implementation set ``isolation_level`` to ``None`` and thereby prevented
the context manager from opening and closing the transaction scopes.
[1] https://docs.python.org/3/library/sqlite3.html#sqlite3-transaction-control-isolation-level
[2] https://github.com/searxng/searxng/pull/5239#discussion_r2381416731
Reported-by: Ivan G <igabaldon@inetol.net > [2]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2025-09-28 07:32:41 +02:00
Markus Heiser
f24d85bc4b
[mod] drop: from __future__ import annotations
...
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2025-09-03 13:37:36 +02:00
Markus Heiser
57b9673efb
[mod] addition of various type hints / tbc
...
- pyright configuration [1]_
- stub files: types-lxml [2]_
- addition of various type hints
- enable use of new type system features on older Python versions [3]_
- ``.tool-versions`` - set python to lowest version we support (3.10.18) [4]_:
Older versions typically lack some typing features found in newer Python
versions. Therefore, for local type checking (before commit), it is necessary
to use the older Python interpreter.
.. [1] https://docs.basedpyright.com/v1.20.0/configuration/config-files/
.. [2] https://pypi.org/project/types-lxml/
.. [3] https://typing-extensions.readthedocs.io/en/latest/#
.. [4] https://mise.jdx.dev/configuration.html#tool-versions
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
Format: reST
2025-09-03 13:37:36 +02:00
Jost Alemann
7420706a50
[chore] fix some docstring typos ( #4815 )
2025-05-20 21:03:54 +02:00
Markus Heiser
4a594f1b53
[fix] ResourceWarning: unclosed database in sqlite3
...
Reported:
- https://github.com/inetol-infrastructure/searxng-container/issues/5
Related:
- https://github.com/searxng/searxng/issues/4405#issuecomment-2692352352
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2025-05-03 08:39:12 +02:00
Markus Heiser
c49a2707c1
[mod] sqlitedb: access to SQLite databases a little more convenient.
...
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de >
2024-10-05 08:18:28 +02:00