diff --git a/CTFd/utils/exports/__init__.py b/CTFd/utils/exports/__init__.py index 0fc162d3..a327b490 100644 --- a/CTFd/utils/exports/__init__.py +++ b/CTFd/utils/exports/__init__.py @@ -123,6 +123,11 @@ def import_ctf(backup, erase=True): ) if erase: + # Clear out existing connections to release any locks + db.session.close() + db.engine.dispose() + + # Drop database and recreate it to get to a clean state drop_database() create_database() # We explicitly do not want to upgrade or stamp here. diff --git a/CTFd/utils/initialization/__init__.py b/CTFd/utils/initialization/__init__.py index b92af1eb..fd266156 100644 --- a/CTFd/utils/initialization/__init__.py +++ b/CTFd/utils/initialization/__init__.py @@ -201,6 +201,7 @@ def init_request_processors(app): db.session.commit() except (InvalidRequestError, IntegrityError): db.session.rollback() + db.session.close() logout_user() else: clear_user_recent_ips(user_id=session["id"])