Don't explode if memory has been twiddled
This commit is contained in:
@@ -73,6 +73,19 @@ class CacheMetric:
|
||||
def inc_evictions(self, size=1):
|
||||
self.evicted_size += size
|
||||
|
||||
def inc_memory_usage(self, memory: int):
|
||||
if self.memory_usage is None:
|
||||
self.memory_usage = 0
|
||||
|
||||
self.memory_usage += memory
|
||||
|
||||
def dec_memory_usage(self, memory: int):
|
||||
self.memory_usage -= memory
|
||||
|
||||
def clear_memory_usage(self, memory: int):
|
||||
if self.memory_usage is not None:
|
||||
self.memory_usage = 0
|
||||
|
||||
def describe(self):
|
||||
return []
|
||||
|
||||
|
||||
@@ -172,9 +172,6 @@ class LruCache(Generic[KT, VT]):
|
||||
self,
|
||||
collect_callback=metrics_collection_callback,
|
||||
) # type: Optional[CacheMetric]
|
||||
|
||||
if TRACK_MEMORY_USAGE and metrics:
|
||||
metrics.memory_usage = 0
|
||||
else:
|
||||
metrics = None
|
||||
|
||||
@@ -228,7 +225,7 @@ class LruCache(Generic[KT, VT]):
|
||||
cached_cache_len[0] += size_callback(node.value)
|
||||
|
||||
if TRACK_MEMORY_USAGE and metrics:
|
||||
metrics.memory_usage += node.memory
|
||||
metrics.inc_memory_usage(node.memory)
|
||||
|
||||
def move_node_to_front(node):
|
||||
prev_node = node.prev_node
|
||||
@@ -258,7 +255,7 @@ class LruCache(Generic[KT, VT]):
|
||||
node.callbacks.clear()
|
||||
|
||||
if TRACK_MEMORY_USAGE and metrics:
|
||||
metrics.memory_usage -= node.memory
|
||||
metrics.dec_memory_usage(node.memory)
|
||||
|
||||
return deleted_len
|
||||
|
||||
@@ -379,7 +376,7 @@ class LruCache(Generic[KT, VT]):
|
||||
cached_cache_len[0] = 0
|
||||
|
||||
if TRACK_MEMORY_USAGE and metrics:
|
||||
metrics.memory_usage = 0
|
||||
metrics.clear_memory_usage()
|
||||
|
||||
@synchronized
|
||||
def cache_contains(key: KT) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user