[FIX] base: prevent module operations while cron is running
closes odoo/odoo#32234 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
This commit is contained in:
@@ -16,6 +16,7 @@ from docutils.core import publish_string
|
||||
from docutils.transforms import Transform, writer_aux
|
||||
from docutils.writers.html4css1 import Writer
|
||||
import lxml.html
|
||||
import psycopg2
|
||||
|
||||
try:
|
||||
from cStringIO import StringIO
|
||||
@@ -479,6 +480,14 @@ class Module(models.Model):
|
||||
|
||||
@api.multi
|
||||
def _button_immediate_function(self, function):
|
||||
try:
|
||||
# This is done because the installation/uninstallation/upgrade can modify a currently
|
||||
# running cron job and prevent it from finishing, and since the ir_cron table is locked
|
||||
# during execution, the lock won't be released until timeout.
|
||||
self._cr.execute("SELECT * FROM ir_cron FOR UPDATE NOWAIT")
|
||||
except psycopg2.OperationalError:
|
||||
raise UserError(_("The server is busy right now, module operations are not possible at"
|
||||
" this time, please try again later."))
|
||||
function(self)
|
||||
|
||||
self._cr.commit()
|
||||
|
||||
Reference in New Issue
Block a user