Skip to content

Commit 6a2e54f

Browse files
committed
periodic task and products
1 parent 74dd364 commit 6a2e54f

File tree

2 files changed

+33
-28
lines changed

2 files changed

+33
-28
lines changed

services/web/server/src/simcore_service_webserver/garbage_collector/_tasks_trash.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from collections.abc import AsyncIterator, Callable
99

1010
from aiohttp import web
11+
from servicelib.logging_utils import log_context
1112
from tenacity import retry
1213
from tenacity.before_sleep import before_sleep_log
1314
from tenacity.wait import wait_exponential
@@ -28,11 +29,8 @@
2829
before_sleep=before_sleep_log(_logger, logging.WARNING),
2930
)
3031
async def _run_task(app: web.Application):
31-
if deleted := await trash_service.delete_expired_trash_as_admin(app):
32-
for name in deleted:
33-
_logger.info("Trash item %s expired and was deleted", f"{name}")
34-
else:
35-
_logger.info("No trash items expired")
32+
with log_context(_logger, logging.INFO, "Deleting expired trashed items"):
33+
await trash_service.delete_expired_trash_as_admin(app)
3634

3735

3836
async def _run_periodically(app: web.Application, wait_interval_s: float):

services/web/server/src/simcore_service_webserver/trash/_service.py

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from models_library.users import UserID
99
from servicelib.logging_errors import create_troubleshotting_log_kwargs
1010
from servicelib.logging_utils import log_context
11+
from simcore_service_webserver.products import _api as products_service
1112

1213
from ..folders import folders_trash_service
1314
from ..projects import projects_trash_service
@@ -108,32 +109,38 @@ async def empty_trash_safe(
108109

109110
async def delete_expired_trash_as_admin(app: web.Application) -> list[str]:
110111
settings = get_plugin_settings(app)
111-
112-
# app-wide
113112
retention = timedelta(days=settings.TRASH_RETENTION_DAYS)
114113
delete_until = arrow.now().datetime - retention
115114

116-
with log_context(
117-
_logger,
118-
logging.DEBUG,
119-
"CODE PLACEHOLDER: **ALL** items marked as trashed during %s days are deleted (those marked before %s)",
120-
retention,
121-
delete_until,
122-
):
123-
try:
124-
await folders_trash_service.batch_delete_trashed_folders_as_admin(
125-
app, trashed_before=delete_until, product_name="TODO", fail_fast=False
126-
)
127-
except Exception as exc: # pylint: disable=broad-exception-caught
128-
_logger.warning(
129-
**create_troubleshotting_log_kwargs(
130-
"Error deleting a trashed folders (and content) that were expired.",
131-
error=exc,
132-
error_context={
133-
"delete_until": delete_until,
134-
"retention": retention,
135-
},
115+
for product in products_service.list_products(app):
116+
with log_context(
117+
_logger,
118+
logging.DEBUG,
119+
"Items marked as trashed before %s in %s [retention=%s]",
120+
retention,
121+
product.display_name,
122+
delete_until,
123+
):
124+
try:
125+
126+
await folders_trash_service.batch_delete_trashed_folders_as_admin(
127+
app,
128+
trashed_before=delete_until,
129+
product_name=product.name,
130+
fail_fast=False,
131+
)
132+
133+
except Exception as exc: # pylint: disable=broad-exception-caught
134+
_logger.warning(
135+
**create_troubleshotting_log_kwargs(
136+
"Error batch deleting expired trashed folders as admin.",
137+
error=exc,
138+
error_context={
139+
"delete_until": delete_until,
140+
"retention": retention,
141+
"product_name": product.name,
142+
},
143+
)
136144
)
137-
)
138145

139146
return []

0 commit comments

Comments
 (0)