From 4a36fc94edc50d3478386265019f7c57a65d6720 Mon Sep 17 00:00:00 2001 From: Danny Adair Date: Wed, 22 Apr 2026 15:54:09 +1200 Subject: [PATCH] [FIX] queue_job: repoint default_env to SUPERUSER in runjob runjob is declared auth="none", so _auth_method_none pins request.env and transaction.default_env to a uid=None env. `env = http.request.env( user=SUPERUSER_ID)` only creates a local superuser env, leaving the default_env as uid=None. Any flush that goes through Transaction.flush() -> default_env.flush_all() then recomputes stored fields as uid=None and fails on anything dereferencing self.env.user. `http.request.update_env(user=SUPERUSER_ID)` additionally sets transaction.default_env to the superuser env. Closes #922 --- queue_job/controllers/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/queue_job/controllers/main.py b/queue_job/controllers/main.py index a1729b1fe..1c8da57b4 100644 --- a/queue_job/controllers/main.py +++ b/queue_job/controllers/main.py @@ -215,7 +215,8 @@ def _get_failure_values(cls, job, traceback_txt, orig_exception): ) def runjob(self, db, job_uuid, **kw): http.request.session.db = db - env = http.request.env(user=SUPERUSER_ID) + http.request.update_env(user=SUPERUSER_ID) + env = http.request.env job = self._acquire_job(env, job_uuid) if not job: return ""