mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-01-21 00:11:20 -05:00
fix: unclosed sessions (#1734)
* resolve session leak * cleanup session management functions
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import Optional
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
from mealie.db.db_setup import create_session
|
||||
from mealie.db.db_setup import session_context
|
||||
from mealie.repos.all_repositories import get_repositories
|
||||
from mealie.schema.response.pagination import PaginationQuery
|
||||
from mealie.services.event_bus_service.event_bus_service import EventBusService
|
||||
@@ -31,10 +31,11 @@ def post_group_webhooks(start_dt: Optional[datetime] = None, group_id: Optional[
|
||||
|
||||
if group_id is None:
|
||||
# publish the webhook event to each group's event bus
|
||||
session = create_session()
|
||||
repos = get_repositories(session)
|
||||
groups_data = repos.groups.page_all(PaginationQuery(page=1, per_page=-1))
|
||||
group_ids = [group.id for group in groups_data.items]
|
||||
|
||||
with session_context() as session:
|
||||
repos = get_repositories(session)
|
||||
groups_data = repos.groups.page_all(PaginationQuery(page=1, per_page=-1))
|
||||
group_ids = [group.id for group in groups_data.items]
|
||||
|
||||
else:
|
||||
group_ids = [group_id]
|
||||
|
||||
@@ -3,7 +3,7 @@ from pathlib import Path
|
||||
|
||||
from mealie.core import root_logger
|
||||
from mealie.core.config import get_app_dirs
|
||||
from mealie.db.db_setup import create_session
|
||||
from mealie.db.db_setup import session_context
|
||||
from mealie.db.models.group.exports import GroupDataExportsModel
|
||||
|
||||
ONE_DAY_AS_MINUTES = 1440
|
||||
@@ -15,20 +15,19 @@ def purge_group_data_exports(max_minutes_old=ONE_DAY_AS_MINUTES):
|
||||
|
||||
logger.info("purging group data exports")
|
||||
limit = datetime.datetime.now() - datetime.timedelta(minutes=max_minutes_old)
|
||||
session = create_session()
|
||||
|
||||
results = session.query(GroupDataExportsModel).filter(GroupDataExportsModel.expires <= limit)
|
||||
with session_context() as session:
|
||||
results = session.query(GroupDataExportsModel).filter(GroupDataExportsModel.expires <= limit)
|
||||
|
||||
total_removed = 0
|
||||
for result in results:
|
||||
session.delete(result)
|
||||
Path(result.path).unlink(missing_ok=True)
|
||||
total_removed += 1
|
||||
total_removed = 0
|
||||
for result in results:
|
||||
session.delete(result)
|
||||
Path(result.path).unlink(missing_ok=True)
|
||||
total_removed += 1
|
||||
|
||||
session.commit()
|
||||
session.close()
|
||||
session.commit()
|
||||
|
||||
logger.info(f"finished purging group data exports. {total_removed} exports removed from group data")
|
||||
logger.info(f"finished purging group data exports. {total_removed} exports removed from group data")
|
||||
|
||||
|
||||
def purge_excess_files() -> None:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import datetime
|
||||
|
||||
from mealie.core import root_logger
|
||||
from mealie.db.db_setup import create_session
|
||||
from mealie.db.db_setup import session_context
|
||||
from mealie.db.models.users.password_reset import PasswordResetModel
|
||||
|
||||
logger = root_logger.get_logger()
|
||||
@@ -13,8 +13,9 @@ def purge_password_reset_tokens():
|
||||
"""Purges all events after x days"""
|
||||
logger.info("purging password reset tokens")
|
||||
limit = datetime.datetime.now() - datetime.timedelta(days=MAX_DAYS_OLD)
|
||||
session = create_session()
|
||||
session.query(PasswordResetModel).filter(PasswordResetModel.created_at <= limit).delete()
|
||||
session.commit()
|
||||
session.close()
|
||||
logger.info("password reset tokens purges")
|
||||
|
||||
with session_context() as session:
|
||||
session.query(PasswordResetModel).filter(PasswordResetModel.created_at <= limit).delete()
|
||||
session.commit()
|
||||
session.close()
|
||||
logger.info("password reset tokens purges")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import datetime
|
||||
|
||||
from mealie.core import root_logger
|
||||
from mealie.db.db_setup import create_session
|
||||
from mealie.db.db_setup import session_context
|
||||
from mealie.db.models.group import GroupInviteToken
|
||||
|
||||
logger = root_logger.get_logger()
|
||||
@@ -13,8 +13,10 @@ def purge_group_registration():
|
||||
"""Purges all events after x days"""
|
||||
logger.info("purging expired registration tokens")
|
||||
limit = datetime.datetime.now() - datetime.timedelta(days=MAX_DAYS_OLD)
|
||||
session = create_session()
|
||||
session.query(GroupInviteToken).filter(GroupInviteToken.created_at <= limit).delete()
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
with session_context() as session:
|
||||
session.query(GroupInviteToken).filter(GroupInviteToken.created_at <= limit).delete()
|
||||
session.commit()
|
||||
session.close()
|
||||
|
||||
logger.info("registration token purged")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from mealie.core import root_logger
|
||||
from mealie.db.db_setup import with_session
|
||||
from mealie.db.db_setup import session_context
|
||||
from mealie.repos.repository_factory import AllRepositories
|
||||
from mealie.services.user_services.user_service import UserService
|
||||
|
||||
@@ -8,7 +8,7 @@ def locked_user_reset():
|
||||
logger = root_logger.get_logger()
|
||||
logger.info("resetting locked users")
|
||||
|
||||
with with_session() as session:
|
||||
with session_context() as session:
|
||||
repos = AllRepositories(session)
|
||||
user_service = UserService(repos)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user