diff options
| author | Dan Engelbrecht <[email protected]> | 2023-10-06 13:51:14 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-06 13:51:14 +0200 |
| commit | eda7a9151ca734f4689a3b5d054f597f633c0369 (patch) | |
| tree | 3a87180b6a33c7ce1f7beb17ada6ff9786a6029a /src | |
| parent | fix gc infinite loop (#453) (diff) | |
| download | zen-eda7a9151ca734f4689a3b5d054f597f633c0369.tar.xz zen-eda7a9151ca734f4689a3b5d054f597f633c0369.zip | |
fix memory usage in memlayer (#454)
* Bugfix: Remove double counting of memory usage in memcachelayer
Diffstat (limited to 'src')
| -rw-r--r-- | src/zenserver/cache/cachememorylayer.cpp | 17 | ||||
| -rw-r--r-- | src/zenserver/cache/cachememorylayer.h | 2 |
2 files changed, 4 insertions, 15 deletions
diff --git a/src/zenserver/cache/cachememorylayer.cpp b/src/zenserver/cache/cachememorylayer.cpp index cae3b457e..1651ad05a 100644 --- a/src/zenserver/cache/cachememorylayer.cpp +++ b/src/zenserver/cache/cachememorylayer.cpp @@ -96,15 +96,7 @@ ZenCacheMemoryLayer::Put(std::string_view InBucket, const IoHash& HashKey, const Trim(); // Note that since the underlying IoBuffer is retained, the content type is also - int64_t SizeDiff = Bucket->Put(HashKey, Value); - if (SizeDiff > 0) - { - m_TotalSize.fetch_add(gsl::narrow<uint64_t>(SizeDiff)); - } - else if (SizeDiff < 0) - { - m_TotalSize.fetch_sub(gsl::narrow<uint64_t>(-SizeDiff)); - } + Bucket->Put(HashKey, Value); } bool @@ -384,7 +376,7 @@ ZenCacheMemoryLayer::CacheBucket::Get(const IoHash& HashKey, ZenCacheValue& OutV return false; } -int64_t +void ZenCacheMemoryLayer::CacheBucket::Put(const IoHash& HashKey, const ZenCacheValue& Value) { ZEN_TRACE_CPU("Z$::Mem::Bucket::Put"); @@ -412,7 +404,7 @@ ZenCacheMemoryLayer::CacheBucket::Put(const IoHash& HashKey, const ZenCacheValue else if (m_CacheMap.size() == std::numeric_limits<uint32_t>::max()) { // No more space in our memory cache! - return 0; + return; } else { @@ -430,14 +422,11 @@ ZenCacheMemoryLayer::CacheBucket::Put(const IoHash& HashKey, const ZenCacheValue if (PayloadSize > OldPayloadSize) { m_TotalSize.fetch_add(PayloadSize - OldPayloadSize); - return gsl::narrow<int64_t>(PayloadSize - OldPayloadSize); } else if (PayloadSize < OldPayloadSize) { m_TotalSize.fetch_sub(OldPayloadSize - PayloadSize); - return -gsl::narrow<int64_t>(OldPayloadSize - PayloadSize); } - return 0; } void diff --git a/src/zenserver/cache/cachememorylayer.h b/src/zenserver/cache/cachememorylayer.h index f15fe241b..a50b73a93 100644 --- a/src/zenserver/cache/cachememorylayer.h +++ b/src/zenserver/cache/cachememorylayer.h @@ -98,7 +98,7 @@ private: std::atomic_uint64_t m_TotalSize{}; bool Get(const IoHash& HashKey, ZenCacheValue& OutValue); - int64_t Put(const IoHash& HashKey, const ZenCacheValue& Value); + void Put(const IoHash& HashKey, const ZenCacheValue& Value); uint64_t Trim(GcClock::TimePoint ExpireTime); void Drop(); void ScrubStorage(ScrubContext& Ctx); |