summaryrefslogtreecommitdiff
path: root/openerp/cli/server.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2015-11-26 10:40:59 +0100
committerChristophe Simonis <chs@odoo.com>2015-11-26 10:40:59 +0100
commit78ea8eb0586ff108bde4da3c144ff48b73dbedf8 (patch)
tree638132c93ad28073a7672713808daecfaca2ede6 /openerp/cli/server.py
parentb459c4dc0324e2a3949d02ae246f4233cd6131ea (diff)
[FIX] core: correcly handle pidfile deletion.
As atexit function are inherited by subprocess, the pidfile was always deleted when the first worker (http or cron) died. Now, only the process that created the pidfile will delete it.
Diffstat (limited to 'openerp/cli/server.py')
-rw-r--r--openerp/cli/server.py10
1 files changed, 5 insertions, 5 deletions
diff --git a/openerp/cli/server.py b/openerp/cli/server.py
index f3932b4bf60..d532a067b5b 100644
--- a/openerp/cli/server.py
+++ b/openerp/cli/server.py
@@ -80,9 +80,9 @@ def report_configuration():
('database user', config['db_user'])]:
_logger.info("%s: %s", name, value)
-def rm_pid_file():
+def rm_pid_file(main_pid):
config = openerp.tools.config
- if not openerp.evented and config['pidfile']:
+ if config['pidfile'] and main_pid == os.getpid():
try:
os.unlink(config['pidfile'])
except OSError:
@@ -95,10 +95,10 @@ def setup_pid_file():
"""
config = openerp.tools.config
if not openerp.evented and config['pidfile']:
+ pid = os.getpid()
with open(config['pidfile'], 'w') as fd:
- pidtext = "%d" % (os.getpid())
- fd.write(pidtext)
- atexit.register(rm_pid_file)
+ fd.write(str(pid))
+ atexit.register(rm_pid_file, pid)
def export_translation():