From da8eb2e508e18649b819d355f3cbd160d96596de Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 3 Aug 2012 06:01:29 -0400 Subject: [PATCH] Close database connection after lock access to keep this high call code from keeping too many open connections --- apps/lock_manager/managers.py | 3 +++ apps/lock_manager/models.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/lock_manager/managers.py b/apps/lock_manager/managers.py index 4096c5e85b..351bc6b7bd 100644 --- a/apps/lock_manager/managers.py +++ b/apps/lock_manager/managers.py @@ -3,6 +3,7 @@ from __future__ import absolute_import import logging import datetime +from django.db import close_connection from django.db.utils import IntegrityError from django.db import transaction from django.db import models @@ -43,3 +44,5 @@ class LockManager(models.Manager): else: logger.debug('unable to acquire lock: %s' % name) raise LockError('Unable to acquire lock') + finally: + close_connection() diff --git a/apps/lock_manager/models.py b/apps/lock_manager/models.py index d7d47815bd..62e8fd048d 100644 --- a/apps/lock_manager/models.py +++ b/apps/lock_manager/models.py @@ -29,7 +29,6 @@ class Lock(models.Model): @transaction.commit_on_success def release(self): - close_connection() try: lock = Lock.objects.get(name=self.name, creation_datetime=self.creation_datetime) lock.delete() @@ -38,6 +37,8 @@ class Lock(models.Model): pass except DatabaseError: transaction.rollback() + finally: + close_connection() class Meta: verbose_name = _(u'lock')