[FIX] force suppression of pidfile at exit of openerp.

[IMP] only write/delete pidfile in non-evented mode
[FIX] check if evented mode before checking in worker mode when starting server service

bzr revid: chs@openerp.com-20140404154658-6x5rxyq12guej43q
This commit is contained in:
Christophe Simonis 2014-04-04 17:46:58 +02:00
parent 72e7a75eae
commit 4335ff0712
2 changed files with 12 additions and 10 deletions

View File

@ -29,6 +29,7 @@ GNU Public Licence.
(c) 2003-TODAY, Fabien Pinckaers - OpenERP SA
"""
import atexit
import logging
import os
import signal
@ -78,16 +79,22 @@ def report_configuration():
('database user', config['db_user'])]:
_logger.info("%s: %s", name, value)
def rm_pid_file():
config = openerp.tools.config
if not openerp.evented and os.path.exists(config['pidfile']):
os.unlink(config['pidfile'])
def setup_pid_file():
""" Create a file with the process id written in it.
This function assumes the configuration has been initialized.
"""
config = openerp.tools.config
if config['pidfile']:
if not openerp.evented and config['pidfile']:
with open(config['pidfile'], 'w') as fd:
pidtext = "%d" % (os.getpid())
fd.write(pidtext)
atexit.register(rm_pid_file)
def preload_registry(dbname):
""" Preload a registry, and start the cron."""
@ -189,14 +196,9 @@ def main(args):
if not config["stop_after_init"]:
setup_pid_file()
openerp.service.server.start()
if config['pidfile']:
os.unlink(config['pidfile'])
else:
sys.exit(rc)
_logger.info('OpenERP server is running, waiting for connections...')
quit_on_signals()
class Server(Command):
def run(self, args):
main(args)

View File

@ -429,7 +429,7 @@ class PreforkServer(CommonServer):
sys.exit(0)
def long_polling_spawn(self):
nargs = stripped_sys_argv('--pidfile','--workers')
nargs = stripped_sys_argv()
cmd = nargs[0]
cmd = os.path.join(os.path.dirname(cmd), "openerp-gevent")
nargs[0] = cmd
@ -814,10 +814,10 @@ def start():
"""
global server
load_server_wide_modules()
if config['workers']:
server = PreforkServer(openerp.service.wsgi_server.application)
elif openerp.evented:
if openerp.evented:
server = GeventServer(openerp.service.wsgi_server.application)
elif config['workers']:
server = PreforkServer(openerp.service.wsgi_server.application)
else:
server = ThreadedServer(openerp.service.wsgi_server.application)