Skip to content

Commit 9ca6bcc

Browse files
committed
Simplify job env management
1 parent 6f55287 commit 9ca6bcc

2 files changed

Lines changed: 10 additions & 12 deletions

File tree

queue_job/controllers/main.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from psycopg2 import OperationalError, errorcodes
1313
from werkzeug.exceptions import BadRequest, Forbidden
1414

15-
from odoo import SUPERUSER_ID, _, api, http, registry, tools
15+
from odoo import SUPERUSER_ID, _, api, http, tools
1616
from odoo.service.model import PG_CONCURRENCY_ERRORS_TO_RETRY
1717
from odoo.tools import config
1818

@@ -149,8 +149,7 @@ def _enqueue_dependent_jobs(cls, env, job):
149149
def _runjob(cls, env: api.Environment, job: Job) -> None:
150150
def retry_postpone(job, message, seconds=None):
151151
job.env.clear()
152-
with registry(job.env.cr.dbname).cursor() as new_cr:
153-
job.env = api.Environment(new_cr, SUPERUSER_ID, {})
152+
with job.in_temporary_env():
154153
job.postpone(result=message, seconds=seconds)
155154
job.set_pending(reset_retry=False)
156155
job.store()
@@ -194,8 +193,7 @@ def retry_postpone(job, message, seconds=None):
194193
traceback_txt = buff.getvalue()
195194
_logger.error(traceback_txt)
196195
job.env.clear()
197-
with registry(job.env.cr.dbname).cursor() as new_cr:
198-
job.env = job.env(cr=new_cr)
196+
with job.in_temporary_env():
199197
vals = cls._get_failure_values(job, traceback_txt, orig_exception)
200198
job.set_failed(**vals)
201199
job.store()

queue_job/job.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ def perform(self):
505505
self.retry += 1
506506
try:
507507
if self.job_config.allow_commit:
508-
env_context_manager = self._with_temporary_env()
508+
env_context_manager = self.in_temporary_env()
509509
else:
510510
env_context_manager = nullcontext()
511511
with env_context_manager:
@@ -530,14 +530,14 @@ def perform(self):
530530
return self.result
531531

532532
@contextmanager
533-
def _with_temporary_env(self):
533+
def in_temporary_env(self):
534534
with self.env.registry.cursor() as new_cr:
535-
env = self.recordset.env
536-
self.recordset = self.recordset.with_env(env(cr=new_cr))
535+
env = self.env
536+
self._env = env(cr=new_cr)
537537
try:
538538
yield
539539
finally:
540-
self.recordset = self.recordset.with_env(env)
540+
self._env = env
541541

542542
def _get_common_dependent_jobs_query(self):
543543
return """
@@ -705,7 +705,7 @@ def env(self):
705705
return self.recordset.env
706706

707707
@env.setter
708-
def env(self, env):
708+
def _env(self, env):
709709
self.recordset = self.recordset.with_env(env)
710710

711711
@property
@@ -772,7 +772,7 @@ def model_name(self):
772772

773773
@property
774774
def user_id(self):
775-
return self.recordset.env.uid
775+
return self.env.uid
776776

777777
@property
778778
def eta(self):

0 commit comments

Comments
 (0)