You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ro...@apache.org on 2020/12/29 13:39:05 UTC

[buildstream] 03/06: artifactcache: replace set_cache_size()

This is an automated email from the ASF dual-hosted git repository.

root pushed a commit to branch tiagogomes/issue-573
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 2d9cb0c0360d8d10bdae387533e61a13da3f5f1f
Author: Tiago Gomes <ti...@codethink.co.uk>
AuthorDate: Tue Sep 11 15:10:40 2018 +0100

    artifactcache: replace set_cache_size()
    
    Replace set_cache_size() with subtract_cache_size(), for symmetry with
    add_artifact_size().
---
 buildstream/_artifactcache/artifactcache.py | 47 +++++++++++------------------
 buildstream/_scheduler/jobs/cleanupjob.py   |  2 +-
 2 files changed, 18 insertions(+), 31 deletions(-)

diff --git a/buildstream/_artifactcache/artifactcache.py b/buildstream/_artifactcache/artifactcache.py
index 047587b..ea8a323 100644
--- a/buildstream/_artifactcache/artifactcache.py
+++ b/buildstream/_artifactcache/artifactcache.py
@@ -234,7 +234,7 @@ class ArtifactCache():
     # Clean the artifact cache as much as possible.
     #
     # Returns:
-    #    (int): The size of the cache after having cleaned up
+    #     (int): Amount of bytes cleaned from the cache.
     #
     def clean(self):
         artifacts = self.list_artifacts()
@@ -252,7 +252,7 @@ class ArtifactCache():
             ])
 
         # Do a real computation of the cache size once, just in case
-        self.compute_cache_size()
+        old_cache_size = self.compute_cache_size()
 
         while self.get_cache_size() >= self._cache_lower_threshold:
             try:
@@ -280,12 +280,9 @@ class ArtifactCache():
 
                 # Remove the actual artifact, if it's not required.
                 size = self.remove(to_remove)
+                self._cache_size -= size
 
-                # Remove the size from the removed size
-                self.set_cache_size(self._cache_size - size)
-
-        # This should be O(1) if implemented correctly
-        return self.get_cache_size()
+        return old_cache_size - self._cache_size
 
     # compute_cache_size()
     #
@@ -302,17 +299,24 @@ class ArtifactCache():
 
     # add_artifact_size()
     #
-    # Adds the reported size of a newly cached artifact to the
-    # current cache size.
+    # Adds given artifact size to the cache size
     #
     # Args:
-    #     artifact_size (int): The size to add.
+    #     artifact_size (int): The artifact size to add.
     #
     def add_artifact_size(self, artifact_size):
-        cache_size = self.get_cache_size()
-        cache_size += artifact_size
+        self._cache_size = self.get_cache_size() + artifact_size
+        self._write_cache_size(self._cache_size)
 
-        self.set_cache_size(cache_size)
+    # subtract_artifact_size()
+    #
+    # Subtracts given artifact size from the cache size
+    #
+    # Args:
+    #     artifact_size (int): The artifact size to subtract.
+    #
+    def subtract_artifact_size(self, artifact_size):
+        self.add_artifact_size(artifact_size * -1)
 
     # get_cache_size()
     #
@@ -330,23 +334,6 @@ class ArtifactCache():
 
         return self._cache_size
 
-    # set_cache_size()
-    #
-    # Forcefully set the overall cache size.
-    #
-    # This is used to update the size in the main process after
-    # having calculated in a cleanup or a cache size calculation job.
-    #
-    # Args:
-    #     cache_size (int): The size to set.
-    #
-    def set_cache_size(self, cache_size):
-
-        assert cache_size is not None
-
-        self._cache_size = cache_size
-        self._write_cache_size(self._cache_size)
-
     # has_quota_exceeded()
     #
     # Checks if the current artifact cache size exceeds the quota.
diff --git a/buildstream/_scheduler/jobs/cleanupjob.py b/buildstream/_scheduler/jobs/cleanupjob.py
index 399435a..1f1cb14 100644
--- a/buildstream/_scheduler/jobs/cleanupjob.py
+++ b/buildstream/_scheduler/jobs/cleanupjob.py
@@ -32,4 +32,4 @@ class CleanupJob(Job):
 
     def parent_complete(self, success, result):
         if success:
-            self._artifacts.set_cache_size(result)
+            self._artifacts.subtract_artifact_size(result)