diff -r 928732ec00dd -r fa44db7da2dc web/application.py --- a/web/application.py Thu Jul 17 11:08:56 2014 +0200 +++ b/web/application.py Fri Jul 18 17:35:25 2014 +0200 @@ -35,7 +35,7 @@ from cubicweb import ( ValidationError, Unauthorized, Forbidden, AuthenticationError, NoSelectableObject, - BadConnectionId, CW_EVENT_MANAGER) + CW_EVENT_MANAGER) from cubicweb.repoapi import anonymous_cnx from cubicweb.web import LOGGER, component, cors from cubicweb.web import ( @@ -88,22 +88,15 @@ closed, total = 0, 0 for session in self.current_sessions(): total += 1 - try: - last_usage_time = session.cnx.check() - except AttributeError: - last_usage_time = session.mtime - except BadConnectionId: + last_usage_time = session.mtime + no_use_time = (time() - last_usage_time) + if session.anonymous_session: + if no_use_time >= self.cleanup_anon_session_time: + self.close_session(session) + closed += 1 + elif session_time is not None and no_use_time >= session_time: self.close_session(session) closed += 1 - else: - no_use_time = (time() - last_usage_time) - if session.anonymous_session: - if no_use_time >= self.cleanup_anon_session_time: - self.close_session(session) - closed += 1 - elif session_time is not None and no_use_time >= session_time: - self.close_session(session) - closed += 1 return closed, total - closed def current_sessions(self): @@ -300,6 +293,21 @@ """wrapper around _publish to log all queries executed for a given accessed path """ + def wrap_set_cnx(func): + def wrap_execute(cnx): + orig_execute = cnx.execute + def execute(rql, kwargs=None, build_descr=True): + tstart, cstart = time(), clock() + rset = orig_execute(rql, kwargs, build_descr=build_descr) + cnx.executed_queries.append((rql, kwargs, time() - tstart, clock() - cstart)) + return rset + return execute + def set_cnx(cnx): + func(cnx) + cnx.execute = wrap_execute(cnx) + cnx.executed_queries = [] + return set_cnx + req.set_cnx = wrap_set_cnx(req.set_cnx) try: return self.main_handle_request(req, path) finally: