You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by gi...@apache.org on 2020/12/29 13:07:10 UTC
[buildstream] 02/04: CASQuota: Don't calculate the quota when we
don't need too
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch jennis/cache_quota
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 3479862abfa2f42ea22b6b26de84ebbe3a6b63f0
Author: James Ennis <ja...@codethink.co.uk>
AuthorDate: Thu Apr 18 15:54:16 2019 +0100
CASQuota: Don't calculate the quota when we don't need too
---
buildstream/_basecache.py | 1 -
buildstream/_cas/cascache.py | 6 ++++--
tests/artifactcache/cache_size.py | 3 ++-
tests/artifactcache/expiry.py | 4 ++--
4 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/buildstream/_basecache.py b/buildstream/_basecache.py
index af3fe9b..d47199b 100644
--- a/buildstream/_basecache.py
+++ b/buildstream/_basecache.py
@@ -40,7 +40,6 @@ class BaseCache():
self.context = context
self.cas = context.get_cascache()
self.casquota = context.get_casquota()
- self.casquota._calculate_cache_quota()
self._remotes_setup = False # Check to prevent double-setup of remotes
# Per-project list of _CASRemote instances.
diff --git a/buildstream/_cas/cascache.py b/buildstream/_cas/cascache.py
index 8d8f3f0..647ece5 100644
--- a/buildstream/_cas/cascache.py
+++ b/buildstream/_cas/cascache.py
@@ -58,6 +58,8 @@ CACHE_SIZE_FILE = "cache_size"
class CASCacheUsage():
def __init__(self, casquota):
+ if not casquota._cache_quota_original:
+ casquota._calculate_cache_quota()
self.quota_config = casquota._config_cache_quota # Configured quota
self.quota_size = casquota._cache_quota_original # Resolved cache quota in bytes
self.used_size = casquota.get_cache_size() # Size used by artifacts in bytes
@@ -1151,8 +1153,6 @@ class CASQuota:
self._ref_callbacks = [] # Call backs to get required refs
self._remove_callbacks = [] # Call backs to remove refs
- self._calculate_cache_quota()
-
# compute_cache_size()
#
# Computes the real artifact cache size.
@@ -1218,6 +1218,8 @@ class CASQuota:
#
def full(self):
+ if not self._cache_quota:
+ self._calculate_cache_quota()
if self.get_cache_size() > self._cache_quota:
return True
diff --git a/tests/artifactcache/cache_size.py b/tests/artifactcache/cache_size.py
index 09f0f25..a7db496 100644
--- a/tests/artifactcache/cache_size.py
+++ b/tests/artifactcache/cache_size.py
@@ -75,6 +75,7 @@ def test_quota_over_1024T(cli, tmpdir):
project = tmpdir.join("main")
os.makedirs(str(project))
_yaml.dump({'name': 'main'}, str(project.join("project.conf")))
+ create_element_size("file.bst", project, ".", [], 1024)
volume_space_patch = mock.patch(
"buildstream._cas.CASQuota._get_cache_volume_size",
@@ -83,5 +84,5 @@ def test_quota_over_1024T(cli, tmpdir):
)
with volume_space_patch:
- result = cli.run(project, args=["build", "file.bst"])
+ result = cli.run(project, args=["build", "file.bst"], project=project)
result.assert_main_error(ErrorDomain.CAS, 'insufficient-storage-for-quota')
diff --git a/tests/artifactcache/expiry.py b/tests/artifactcache/expiry.py
index 6aa518f..46879cf 100644
--- a/tests/artifactcache/expiry.py
+++ b/tests/artifactcache/expiry.py
@@ -348,7 +348,7 @@ def test_never_delete_required_track(cli, datafiles):
def test_invalid_cache_quota(cli, datafiles, quota, err_domain, err_reason):
project = str(datafiles)
os.makedirs(os.path.join(project, 'elements'))
-
+ create_element_size("file.bst", project, 'elements', [], 1024)
cli.configure({
'cache': {
'quota': quota,
@@ -382,7 +382,7 @@ def test_invalid_cache_quota(cli, datafiles, quota, err_domain, err_reason):
)
with volume_space_patch, cache_size_patch:
- res = cli.run(project=project, args=['workspace', 'list'])
+ res = cli.run(project=project, args=['build', 'file.bst'])
if err_domain == 'success':
res.assert_success()