From ee7b6d0f85ba70d89a0b524dfe8d84b18be303cf Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Thu, 14 Aug 2025 19:27:30 +0200 Subject: [PATCH 1/2] Delete pageviews in the same way as imported files This is similar to https://github.com/readthedocs/readthedocs.org/pull/12386, but trying to do a simpler version first. --- readthedocs/projects/tasks/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/readthedocs/projects/tasks/utils.py b/readthedocs/projects/tasks/utils.py index 69effcaa768..34c27411151 100644 --- a/readthedocs/projects/tasks/utils.py +++ b/readthedocs/projects/tasks/utils.py @@ -101,11 +101,13 @@ def clean_project_resources(project, version=None, version_slug=None): version_slug=version_slug, ) - # Remove imported files + # Remove imported files and pageviews faster if version: version.imported_files.all().delete() + version.page_views.all().delete() else: project.imported_files.all().delete() + project.page_views.all().delete() @app.task() From d011b2270aed24c52f15da9c57912f25df26b39f Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Mon, 18 Aug 2025 07:56:42 +0200 Subject: [PATCH 2/2] Don't delete analytics data on versions --- readthedocs/projects/tasks/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/readthedocs/projects/tasks/utils.py b/readthedocs/projects/tasks/utils.py index 34c27411151..b356bf79fa4 100644 --- a/readthedocs/projects/tasks/utils.py +++ b/readthedocs/projects/tasks/utils.py @@ -71,6 +71,7 @@ def clean_project_resources(project, version=None, version_slug=None): - Artifacts from storage. - Search indexes from ES. - Imported files. + - Analytics data (``Pageview``s) :param version: Version instance. If isn't given, all resources of `project` will be deleted. @@ -101,10 +102,10 @@ def clean_project_resources(project, version=None, version_slug=None): version_slug=version_slug, ) - # Remove imported files and pageviews faster + # Try to speed up deletion by calling delete directly + # We can try ``bulk_delete`` if this doesn't work. if version: version.imported_files.all().delete() - version.page_views.all().delete() else: project.imported_files.all().delete() project.page_views.all().delete()