From eea29b5f9ecebce1fcefc5070e4223de0cb72571 Mon Sep 17 00:00:00 2001 From: steve Date: Mon, 21 Jul 2025 11:53:41 -0500 Subject: [PATCH 1/2] deps(api): update dj-database-url dependency, add django_cockroachdb for cockroach support --- api/app/settings/common.py | 14 ++++++------- api/poetry.lock | 23 ++++++++++++++++++---- api/pyproject.toml | 3 ++- docs/docs/deployment/hosting/kubernetes.md | 4 ++-- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/api/app/settings/common.py b/api/app/settings/common.py index 9f658529f657..ac9de779f936 100644 --- a/api/app/settings/common.py +++ b/api/app/settings/common.py @@ -16,7 +16,7 @@ import warnings from datetime import datetime, time, timedelta -import dj_database_url # type: ignore[import-untyped] +import dj_database_url import django_stubs_ext import prometheus_client import pytz @@ -167,7 +167,7 @@ SITE_ID = 1 db_conn_max_age = env.int("DJANGO_DB_CONN_MAX_AGE", 60) -DJANGO_DB_CONN_MAX_AGE = None if db_conn_max_age == -1 else db_conn_max_age +DJANGO_DB_CONN_MAX_AGE = 0 if db_conn_max_age == -1 else db_conn_max_age DATABASE_ROUTERS = ["app.routers.PrimaryReplicaRouter"] NUM_DB_REPLICAS = 0 @@ -260,14 +260,14 @@ # Task processor database — OPTIONALLY SEPARATED TASK_PROCESSOR_DATABASE_URL = env("TASK_PROCESSOR_DATABASE_URL", default=None) -TASK_PROCESSOR_DATABASE_USER = env("TASK_PROCESSOR_DATABASE_USER", default=None) +TASK_PROCESSOR_DATABASE_USER = env("TASK_PROCESSOR_DATABASE_USER", default="") TASK_PROCESSOR_DATABASE_PASSWORD = env( "TASK_PROCESSOR_DATABASE_PASSWORD", - default=None, + default="", ) -TASK_PROCESSOR_DATABASE_HOST = env("TASK_PROCESSOR_DATABASE_HOST", default=None) -TASK_PROCESSOR_DATABASE_PORT = env("TASK_PROCESSOR_DATABASE_PORT", default=None) -TASK_PROCESSOR_DATABASE_NAME = env("TASK_PROCESSOR_DATABASE_NAME", default=None) +TASK_PROCESSOR_DATABASE_HOST = env("TASK_PROCESSOR_DATABASE_HOST", default="") +TASK_PROCESSOR_DATABASE_PORT = env("TASK_PROCESSOR_DATABASE_PORT", default="") +TASK_PROCESSOR_DATABASE_NAME = env("TASK_PROCESSOR_DATABASE_NAME", default="") if TASK_PROCESSOR_DATABASE_URL or TASK_PROCESSOR_DATABASE_NAME: # pragma: no cover if TASK_PROCESSOR_DATABASE_URL: diff --git a/api/poetry.lock b/api/poetry.lock index 9d5b8d97bc01..ac6e19b176e9 100644 --- a/api/poetry.lock +++ b/api/poetry.lock @@ -1192,16 +1192,19 @@ files = [ [[package]] name = "dj-database-url" -version = "0.5.0" +version = "3.0.1" description = "Use Database URLs in your Django Application." optional = false python-versions = "*" groups = ["main"] files = [ - {file = "dj-database-url-0.5.0.tar.gz", hash = "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163"}, - {file = "dj_database_url-0.5.0-py2.py3-none-any.whl", hash = "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9"}, + {file = "dj_database_url-3.0.1-py3-none-any.whl", hash = "sha256:43950018e1eeea486bf11136384aec0fe55b29fe6fd8a44553231b85661d9383"}, + {file = "dj_database_url-3.0.1.tar.gz", hash = "sha256:8994961efb888fc6bf8c41550870c91f6f7691ca751888ebaa71442b7f84eff8"}, ] +[package.dependencies] +Django = ">=4.2" + [[package]] name = "django" version = "4.2.22" @@ -1256,6 +1259,18 @@ django = ">=3.2" django-ipware = ">=3" setuptools = "*" +[[package]] +name = "django-cockroachdb" +version = "4.2" +description = "Django backend for CockroachDB" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "django-cockroachdb-4.2.tar.gz", hash = "sha256:f58d6fadf9b7e9d83309f842d0c8ea9b17d85405069f2b66982058a7ba3ba7d3"}, + {file = "django_cockroachdb-4.2-py3-none-any.whl", hash = "sha256:04fb842d2462a10108552f56683d8fe0e99c60b85e35bd5ad08250251807868e"}, +] + [[package]] name = "django-cors-headers" version = "3.5.0" @@ -5405,4 +5420,4 @@ files = [ [metadata] lock-version = "2.1" python-versions = ">3.11,<3.13" -content-hash = "a77fbee7bc35ae5c1732a54ae358a949c10ba017523dcdbc5e999b62d2888236" +content-hash = "d51ef9efbe9c1bb479722c02615775304e936005a29451f6984320631665a20d" diff --git a/api/pyproject.toml b/api/pyproject.toml index e75c0338c08d..3e13b6e968a0 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -112,7 +112,7 @@ pyparsing = "~2.4.7" requests = "~2.32.4" six = "~1.16.0" whitenoise = "~6.0.0" -dj-database-url = "~0.5.0" +dj-database-url = "~3.0.1" drf-nested-routers = "~0.92.1" shortuuid = "~1.0.1" sendgrid-django = "~4.2.0" @@ -166,6 +166,7 @@ tzdata = "^2024.1" djangorestframework-simplejwt = "^5.3.1" structlog = "^24.4.0" prometheus-client = "^0.21.1" +django_cockroachdb = "~4.2" [tool.poetry.group.auth-controller] optional = true diff --git a/docs/docs/deployment/hosting/kubernetes.md b/docs/docs/deployment/hosting/kubernetes.md index 6a07f0396a52..458ad4c4113f 100644 --- a/docs/docs/deployment/hosting/kubernetes.md +++ b/docs/docs/deployment/hosting/kubernetes.md @@ -385,8 +385,8 @@ The following table lists the configurable parameters of the chart and their def | `postgresqlUsername` | | `postgres` | | `postgresqlPassword` | | `flagsmith` | | `databaseExternal.enabled` | use an external database. Specify database URL, or all parts. | `false` | -| `databaseExternal.url` | See [schema](https://github.com/kennethreitz/dj-database-url#url-schema). | | -| `databaseExternal.type` | Note: Only postgres supported by default images. | `postgres` | +| `databaseExternal.url` | See [schema](https://github.com/jazzband/dj-database-url#url-schema). | | +| `databaseExternal.type` | See [supported databases](https://github.com/jazzband/dj-database-url#supported-databases). | `postgres` | | `databaseExternal.port` | | 5432 | | `databaseExternal.database` | Name of the database within the server | | | `databaseExternal.username` | | | From bc4539c6af5b49191e96ca88aae003aa3cc05ed1 Mon Sep 17 00:00:00 2001 From: steve Date: Mon, 21 Jul 2025 12:15:23 -0500 Subject: [PATCH 2/2] docs(hosting-k8s): update note for databaseExternal.type to indicate Postgres as the only officially tested and supported db. --- docs/docs/deployment/hosting/kubernetes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/deployment/hosting/kubernetes.md b/docs/docs/deployment/hosting/kubernetes.md index 458ad4c4113f..b5c2a08aa953 100644 --- a/docs/docs/deployment/hosting/kubernetes.md +++ b/docs/docs/deployment/hosting/kubernetes.md @@ -386,7 +386,7 @@ The following table lists the configurable parameters of the chart and their def | `postgresqlPassword` | | `flagsmith` | | `databaseExternal.enabled` | use an external database. Specify database URL, or all parts. | `false` | | `databaseExternal.url` | See [schema](https://github.com/jazzband/dj-database-url#url-schema). | | -| `databaseExternal.type` | See [supported databases](https://github.com/jazzband/dj-database-url#supported-databases). | `postgres` | +| `databaseExternal.type` | Note: Only Postgres is fully supported by default images. [Other databases](https://github.com/jazzband/dj-database-url#supported-databases) not guaranteed to work. | `postgres` | | `databaseExternal.port` | | 5432 | | `databaseExternal.database` | Name of the database within the server | | | `databaseExternal.username` | | |