guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/05: Further data deletion improvements


From: Christopher Baines
Subject: 04/05: Further data deletion improvements
Date: Sun, 27 Sep 2020 06:11:26 -0400 (EDT)

cbaines pushed a commit to branch master
in repository data-service.

commit 52a23a53335c979211f46ed4426cc7b1469a9892
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sun Sep 27 11:10:47 2020 +0100

    Further data deletion improvements
---
 guix-data-service/data-deletion.scm | 49 ++++++++++++++++++++++++++++---------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/guix-data-service/data-deletion.scm 
b/guix-data-service/data-deletion.scm
index a8a2fc2..dbb94e5 100644
--- a/guix-data-service/data-deletion.scm
+++ b/guix-data-service/data-deletion.scm
@@ -23,7 +23,9 @@
   #:use-module (guix-data-service model 
package-derivation-by-guix-revision-range)
   #:export (delete-data-for-branch
             delete-revisions-from-branch-except-most-recent-n
-            delete-data-for-all-deleted-branches))
+            delete-revisions-for-all-branches-except-most-recent-n
+            delete-data-for-all-deleted-branches
+            delete-unreferenced-derivations))
 
 (define (delete-revisions-from-branch conn git-repository-id branch-name 
commits)
   (define (delete-jobs conn)
@@ -111,15 +113,16 @@ WHERE guix_revisions.git_repository_id = "
     FROM git_branches
 )")))))
 
-       (unless (null? guix-revision-ids)
-         (for-each (lambda (guix-revision-id)
-                     (delete-guix-revision-package-derivation-entries
-                      conn
-                      (number->string git-repository-id)
-                      guix-revision-id
-                      branch-name))
-                   guix-revision-ids)
+       (exec-query
+        conn
+        "
+DELETE FROM package_derivations_by_guix_revision_range
+WHERE git_repository_id = $1 AND
+      branch_name = $2"
+        (list (number->string git-repository-id)
+              branch-name))
 
+       (unless (null? guix-revision-ids)
          (for-each
           (lambda (table)
             (exec-query
@@ -152,7 +155,13 @@ DELETE FROM ~A WHERE ~A IN (VALUES ~A)"
 DELETE FROM guix_revisions
 WHERE id IN ("
            (string-join guix-revision-ids ", ")
-           ")")))))))
+           ")
+AND id NOT IN (
+  SELECT id FROM guix_revisions
+  INNER JOIN git_branches ON
+    git_branches.commit = guix_revisions.commit AND
+    git_branches.git_repository_id = guix_revisions.git_repository_id
+)")))))))
 
 (define (delete-data-for-branch conn git-repository-id branch-name)
   (define commits
@@ -188,7 +197,7 @@ OFFSET $3"
                            (number->string n)))))
 
   (unless (null? commits)
-    (simple-format #t "deleting ~A commits\n" (length commits))
+    (simple-format #t "deleting ~A commits from ~A\n" (length commits) 
branch-name)
     (delete-revisions-from-branch conn
                                   git-repository-id
                                   branch-name
@@ -200,6 +209,24 @@ OFFSET $3"
                                                       git-repository-id)
                                                      branch-name)))
 
+(define (delete-revisions-for-all-branches-except-most-recent-n n)
+  (with-postgresql-connection
+   "data-deletion"
+   (lambda (conn)
+     (for-each
+      (match-lambda
+        ((git-repository-id branch-name)
+         (delete-revisions-from-branch-except-most-recent-n
+          conn
+          (string->number git-repository-id)
+          branch-name
+          n)))
+      (exec-query
+       conn
+       "
+SELECT DISTINCT git_repository_id, name
+FROM git_branches")))))
+
 (define (delete-data-for-all-branches-but-master)
   (with-postgresql-connection
    "data-deletion"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]