cascache: don't pickle _cache_usage_monitor
We don't need this in subprocesses, and it doesn't pickle, so don't try
to. Make sure we get an error if we do try to use it in subprocesses.
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py
index 83b8e85..448a450 100644
--- a/src/buildstream/_cas/cascache.py
+++ b/src/buildstream/_cas/cascache.py
@@ -113,6 +113,7 @@
self._casd_channel = None
self._casd_cas = None
self._local_cas = None
+ self._cache_usage_monitor_forbidden = False
self._cache_usage_monitor = None
def __getstate__(self):
@@ -123,6 +124,14 @@
assert '_casd_process' in state
state['_casd_process'] = bool(self._casd_process)
+ # The usage monitor is not pickle-able, but we also don't need it in
+ # child processes currently. Make sure that if this changes, we get a
+ # bug report, by setting _cache_usage_monitor_forbidden.
+ assert '_cache_usage_monitor' in state
+ assert '_cache_usage_monitor_forbidden' in state
+ state['_cache_usage_monitor'] = None
+ state['_cache_usage_monitor_forbidden'] = True
+
return state
def _init_casd(self):
@@ -1046,6 +1055,7 @@
#
def get_cache_usage(self):
if not self._cache_usage_monitor:
+ assert not self._cache_usage_monitor_forbidden
self._cache_usage_monitor = _CASCacheUsageMonitor(self)
return self._cache_usage_monitor.get_cache_usage()