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)