Skip to content

Commit 232db3a

Browse files
committed
conneting with trash.service
1 parent 1aef610 commit 232db3a

File tree

5 files changed

+32
-13
lines changed

5 files changed

+32
-13
lines changed

services/web/server/src/simcore_service_webserver/folders/folders_trash_service.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
from ._trash_service import delete_trashed_folder, list_explicitly_trashed_folders
1+
from ._trash_service import (
2+
batch_delete_trashed_folders_as_admin,
3+
delete_trashed_folder,
4+
list_explicitly_trashed_folders,
5+
)
26

37
__all__: tuple[str, ...] = (
8+
"batch_delete_trashed_folders_as_admin",
49
"delete_trashed_folder",
510
"list_explicitly_trashed_folders",
611
)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
before_sleep=before_sleep_log(_logger, logging.WARNING),
2929
)
3030
async def _run_task(app: web.Application):
31-
if deleted := await trash_service.delete_expired_trash(app):
31+
if deleted := await trash_service.delete_expired_trash_as_admin(app):
3232
for name in deleted:
3333
_logger.info("Trash item %s expired and was deleted", f"{name}")
3434
else:

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

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import asyncio
21
import logging
32
from datetime import timedelta
43
from typing import Final
@@ -107,19 +106,34 @@ async def empty_trash_safe(
107106
await _empty_explicitly_trashed_folders_and_content(app, product_name, user_id)
108107

109108

110-
async def delete_expired_trash(app: web.Application) -> list[str]:
111-
"""Deletes expired items in the trash"""
109+
async def delete_expired_trash_as_admin(app: web.Application) -> list[str]:
112110
settings = get_plugin_settings(app)
113111

114112
# app-wide
115113
retention = timedelta(days=settings.TRASH_RETENTION_DAYS)
116-
expiration_dt = arrow.now().datetime - retention
114+
delete_until = arrow.now().datetime - retention
117115

118-
_logger.debug(
116+
with log_context(
117+
_logger,
118+
logging.DEBUG,
119119
"CODE PLACEHOLDER: **ALL** items marked as trashed during %s days are deleted (those marked before %s)",
120120
retention,
121-
expiration_dt,
122-
)
123-
await asyncio.sleep(5)
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+
},
136+
)
137+
)
124138

125139
return []
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from ._service import delete_expired_trash
1+
from ._service import delete_expired_trash_as_admin
22

3-
__all__: tuple[str, ...] = ("delete_expired_trash",)
3+
__all__: tuple[str, ...] = ("delete_expired_trash_as_admin",)
44
# nopycln: file

services/web/server/tests/unit/with_dbs/03/trash/test_trash_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ async def test_trash_service__delete_expired_trash(
110110
assert ProjectGet.model_validate(data).trashed_by == logged_user["primary_gid"]
111111

112112
# UNDER TEST: Run delete_expired_trash
113-
await trash_service.delete_expired_trash(client.app)
113+
await trash_service.delete_expired_trash_as_admin(client.app)
114114

115115
# ASSERT: logged_user tries to get the project and expects 404
116116
resp = await client.get(f"/v0/projects/{user_project_id}")

0 commit comments

Comments
 (0)