Always remove the session when running check_db_up_to_date()
authorChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 15 Aug 2014 21:23:15 +0000 (16:23 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Fri, 15 Aug 2014 21:30:59 +0000 (16:30 -0500)
This commit sponsored by Francois Marier.  Thank you!

mediagoblin/db/util.py

index aba9c59c79f06ef873f569d4e7aaf74cb6d1c790..515fd6cdea5dfebcdbc1807c6498accfe3843108 100644 (file)
@@ -76,11 +76,16 @@ def check_db_up_to_date():
     dbdatas = gather_database_data(mgg.global_config.get('plugins', {}).keys())
 
     for dbdata in dbdatas:
-        migration_manager = dbdata.make_migration_manager(Session())
-        if migration_manager.database_current_migration is None or \
-                migration_manager.migrations_to_run():
-            sys.exit("Your database is not up to date. Please run "
-                     "'gmg dbupdate' before starting MediaGoblin.")
+        session = Session()
+        try:
+            migration_manager = dbdata.make_migration_manager(session)
+            if migration_manager.database_current_migration is None or \
+                    migration_manager.migrations_to_run():
+                sys.exit("Your database is not up to date. Please run "
+                         "'gmg dbupdate' before starting MediaGoblin.")
+        finally:
+            Session.rollback()
+            Session.remove()
 
 
 if __name__ == '__main__':