# HG changeset patch # User Mads Kiilerich # Date 2020-12-28 00:04:26 # Node ID 43ad0cec90370ff8d25b56a61fe30d4fa311d23e # Parent 1c43fd986a8e4ad42b7e6d08f2993e6320181fdb celery: always drop db session after running a task Drop dbsession annotation - it could easily be forgotten. This seems simpler and more reliable. diff --git a/kallithea/lib/celerylib/__init__.py b/kallithea/lib/celerylib/__init__.py --- a/kallithea/lib/celerylib/__init__.py +++ b/kallithea/lib/celerylib/__init__.py @@ -66,6 +66,7 @@ def task(f_org): try: f_org(*args, **kwargs) finally: + meta.Session.remove() # prevent reuse of auto created db sessions log.info('executed %s task', f_org.__name__) runner = kallithea.CELERY_APP.task(name=f_org.__name__, ignore_result=True)(f_async) @@ -111,15 +112,3 @@ def locked_task(func): return 'Task with key %s already running' % lockkey return decorator(__wrapper, func) - - -def dbsession(func): - def __wrapper(func, *fargs, **fkwargs): - try: - ret = func(*fargs, **fkwargs) - return ret - finally: - if kallithea.CELERY_APP and not kallithea.CELERY_APP.conf.task_always_eager: - meta.Session.remove() - - return decorator(__wrapper, func) diff --git a/kallithea/model/async_tasks.py b/kallithea/model/async_tasks.py --- a/kallithea/model/async_tasks.py +++ b/kallithea/model/async_tasks.py @@ -55,7 +55,6 @@ log = celery.utils.log.get_task_logger(_ @celerylib.task @celerylib.locked_task -@celerylib.dbsession def whoosh_index(repo_location, full_index): index_location = config['index_dir'] WhooshIndexingDaemon(index_location=index_location, @@ -77,7 +76,6 @@ def _author_username(author): @celerylib.task -@celerylib.dbsession def get_commits_stats(repo_name, ts_min_y, ts_max_y, recurse_limit=100): lockkey = celerylib.__get_lockkey('get_commits_stats', repo_name, ts_min_y, ts_max_y) @@ -233,7 +231,6 @@ def get_commits_stats(repo_name, ts_min_ @celerylib.task -@celerylib.dbsession def send_email(recipients, subject, body='', html_body='', headers=None, from_name=None): """ Sends an email with defined parameters from the .ini files. @@ -350,7 +347,6 @@ def send_email(recipients, subject, body @celerylib.task -@celerylib.dbsession def create_repo(form_data, cur_user): cur_user = db.User.guess_instance(cur_user) @@ -426,7 +422,6 @@ def create_repo(form_data, cur_user): @celerylib.task -@celerylib.dbsession def create_repo_fork(form_data, cur_user): """ Creates a fork of repository using interval VCS methods