fix(ingestion): Fix for module level variable caching in sqllite check (#14861)

This commit is contained in:
Tamas Nemeth 2025-09-26 14:24:51 +02:00 committed by GitHub
parent 4bf3f0e66d
commit 7e9c525448
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 12 deletions

View File

@ -33,13 +33,12 @@ from datahub.utilities.sentinels import Unset, unset
logger: logging.Logger = logging.getLogger(__name__) logger: logging.Logger = logging.getLogger(__name__)
OVERRIDE_SQLITE_VERSION_REQUIREMENT_STR = (
os.environ.get("OVERRIDE_SQLITE_VERSION_REQ") or "" def _get_sqlite_version_override() -> bool:
) """Check if SQLite version requirement should be overridden at runtime."""
OVERRIDE_SQLITE_VERSION_REQUIREMENT = ( override_str = os.environ.get("OVERRIDE_SQLITE_VERSION_REQ") or ""
OVERRIDE_SQLITE_VERSION_REQUIREMENT_STR return bool(override_str and override_str.lower() != "false")
and OVERRIDE_SQLITE_VERSION_REQUIREMENT_STR.lower() != "false"
)
_DEFAULT_FILE_NAME = "sqlite.db" _DEFAULT_FILE_NAME = "sqlite.db"
_DEFAULT_TABLE_NAME = "data" _DEFAULT_TABLE_NAME = "data"
@ -231,7 +230,7 @@ class FileBackedDict(MutableMapping[str, _VT], Closeable, Generic[_VT]):
# We use the ON CONFLICT clause to implement UPSERTs with sqlite. # We use the ON CONFLICT clause to implement UPSERTs with sqlite.
# This was added in 3.24.0 from 2018-06-04. # This was added in 3.24.0 from 2018-06-04.
# See https://www.sqlite.org/lang_conflict.html # See https://www.sqlite.org/lang_conflict.html
if OVERRIDE_SQLITE_VERSION_REQUIREMENT: if _get_sqlite_version_override():
self._use_sqlite_on_conflict = False self._use_sqlite_on_conflict = False
else: else:
raise RuntimeError("SQLite version 3.24.0 or later is required") raise RuntimeError("SQLite version 3.24.0 or later is required")

View File

@ -1,5 +1,6 @@
import dataclasses import dataclasses
import json import json
import os
import pathlib import pathlib
import random import random
import sqlite3 import sqlite3
@ -35,10 +36,7 @@ def test_set_use_sqlite_on_conflict():
with ( with (
patch("sqlite3.sqlite_version_info", (3, 23, 1)), patch("sqlite3.sqlite_version_info", (3, 23, 1)),
patch( patch.dict(os.environ, {"OVERRIDE_SQLITE_VERSION_REQ": "true"}),
"datahub.utilities.file_backed_collections.OVERRIDE_SQLITE_VERSION_REQUIREMENT",
True,
),
): ):
cache = FileBackedDict[int]( cache = FileBackedDict[int](
tablename="cache", tablename="cache",