diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-09-26 12:55:53 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-09-26 12:55:53 +0100 |
commit | 5b4028fa787a00e19f1e7003807c5702a29816cd (patch) | |
tree | f2cf93ce5ef2105c2fec21da10786d3d9ae28130 /synapse | |
parent | Merge remote-tracking branch 'origin/develop' into erikj/destination_retry_cache (diff) | |
parent | Log which cache is throwing exceptions (diff) | |
download | synapse-5b4028fa787a00e19f1e7003807c5702a29816cd.tar.xz |
Merge branch 'rav/fix_expiring_cache_len' into erikj/destination_retry_cache
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/util/caches/__init__.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/synapse/util/caches/__init__.py b/synapse/util/caches/__init__.py index 7b065b195e..f37d5bec08 100644 --- a/synapse/util/caches/__init__.py +++ b/synapse/util/caches/__init__.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import logging import os import six @@ -20,6 +21,8 @@ from six.moves import intern from prometheus_client.core import REGISTRY, Gauge, GaugeMetricFamily +logger = logging.getLogger(__name__) + CACHE_SIZE_FACTOR = float(os.environ.get("SYNAPSE_CACHE_FACTOR", 0.5)) @@ -76,16 +79,20 @@ def register_cache(cache_type, cache_name, cache): return [] def collect(self): - if cache_type == "response_cache": - response_cache_size.labels(cache_name).set(len(cache)) - response_cache_hits.labels(cache_name).set(self.hits) - response_cache_evicted.labels(cache_name).set(self.evicted_size) - response_cache_total.labels(cache_name).set(self.hits + self.misses) - else: - cache_size.labels(cache_name).set(len(cache)) - cache_hits.labels(cache_name).set(self.hits) - cache_evicted.labels(cache_name).set(self.evicted_size) - cache_total.labels(cache_name).set(self.hits + self.misses) + try: + if cache_type == "response_cache": + response_cache_size.labels(cache_name).set(len(cache)) + response_cache_hits.labels(cache_name).set(self.hits) + response_cache_evicted.labels(cache_name).set(self.evicted_size) + response_cache_total.labels(cache_name).set(self.hits + self.misses) + else: + cache_size.labels(cache_name).set(len(cache)) + cache_hits.labels(cache_name).set(self.hits) + cache_evicted.labels(cache_name).set(self.evicted_size) + cache_total.labels(cache_name).set(self.hits + self.misses) + except Exception as e: + logger.warn("Error calculating metrics for %s: %s", cache_name, e) + raise yield GaugeMetricFamily("__unused", "") |