changeset 1834:d0e477b5dc95

backported fixes for issue #318 - session cleanup for mercurial and git middlewares
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 06 Jan 2012 06:09:12 +0200
parents 6f8f1ab20b7d
children ea011e05fb0a
files rhodecode/lib/middleware/simplegit.py rhodecode/lib/middleware/simplehg.py
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/middleware/simplegit.py	Wed Jan 04 04:41:50 2012 +0200
+++ b/rhodecode/lib/middleware/simplegit.py	Fri Jan 06 06:09:12 2012 +0200
@@ -27,6 +27,7 @@
 import os
 import logging
 import traceback
+import time
 
 from dulwich import server as dulserver
 
@@ -72,6 +73,7 @@
 from rhodecode.lib import safe_str
 from rhodecode.lib.auth import authfunc, HasPermissionAnyMiddleware
 from rhodecode.lib.utils import invalidate_cache, is_valid_repo
+from rhodecode.model import meta
 from rhodecode.model.db import User
 
 from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError
@@ -102,6 +104,15 @@
         self.authenticate = AuthBasicAuthenticator('', authfunc)
 
     def __call__(self, environ, start_response):
+        start = time.time()
+        try:
+            return self._handle_request(environ, start_response)
+        finally:
+            log = logging.getLogger(self.__class__.__name__)
+            log.debug('Request time: %.3fs' % (time.time() - start))
+            meta.Session.remove()
+
+    def _handle_request(self, environ, start_response):
         if not is_git(environ):
             return self.application(environ, start_response)
 
--- a/rhodecode/lib/middleware/simplehg.py	Wed Jan 04 04:41:50 2012 +0200
+++ b/rhodecode/lib/middleware/simplehg.py	Fri Jan 06 06:09:12 2012 +0200
@@ -27,6 +27,7 @@
 import os
 import logging
 import traceback
+import time
 
 from mercurial.error import RepoError
 from mercurial.hgweb import hgweb_mod
@@ -38,6 +39,7 @@
 from rhodecode.lib.auth import authfunc, HasPermissionAnyMiddleware
 from rhodecode.lib.utils import make_ui, invalidate_cache, \
     is_valid_repo, ui_sections
+from rhodecode.model import meta
 from rhodecode.model.db import User
 
 from webob.exc import HTTPNotFound, HTTPForbidden, HTTPInternalServerError
@@ -67,6 +69,15 @@
         self.ipaddr = '0.0.0.0'
 
     def __call__(self, environ, start_response):
+        start = time.time()
+        try:
+            return self._handle_request(environ, start_response)
+        finally:
+            log = logging.getLogger(self.__class__.__name__)
+            log.debug('Request time: %.3fs' % (time.time() - start))
+            meta.Session.remove()
+
+    def _handle_request(self, environ, start_response):
         if not is_mercurial(environ):
             return self.application(environ, start_response)