From 415420f58256b35b1eaf7e3dd9a1d9782c3c55b8 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 b4a5a596c..46da185d4 100644 --- a/queue_job/controllers/main.py +++ b/queue_job/controllers/main.py @@ -214,7 +214,8 @@ def _get_failure_values(cls, job, traceback_txt, orig_exception): readonly=False, ) def runjob(self, job_uuid, **kw): - 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 ""