Cleanup Session after each request.
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sat, 28 Jan 2012 12:10:01 +0000 (13:10 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Tue, 28 Feb 2012 19:52:35 +0000 (20:52 +0100)
It's good practice to cleanup the SQL session after each
request so that the next request gets a fresh one.

It's an application decision whether one wants a
just-in-case ROLLBACK or COMMIT. There are two ideas behind
it, really. I have decided for ROLLBACK. The idea is "if
you forget to commit your changes yourself, there's
something broken. Maybe you got an exception?".

mediagoblin/app.py
mediagoblin/db/sql/open.py

index 15327d3927394951f3f76a993e3dab0180796bb4..0a57c09101e7db3944b59f10f594ec93aaf6fdb9 100644 (file)
@@ -184,6 +184,14 @@ class MediaGoblinApp(object):
         for m in self.meddleware[::-1]:
             m.process_response(request, response)
 
+        # Reset the sql session, so that the next request
+        # gets a fresh session
+        try:
+            self.db.reset_after_request()
+        except TypeError:
+            # We're still on mongo
+            pass
+
         return response(environ, start_response)
 
 
index 1bfc553825acf8c73e8b3a65626ca7f8d4c2b6b3..a8677bcbd9c227df8cdb7e7ba4236dd34e7c6a99 100644 (file)
@@ -36,6 +36,7 @@ class DatabaseMaster(object):
         Session.flush()
 
     def reset_after_request(self):
+        Session.rollback()
         Session.remove()