aboutsummaryrefslogtreecommitdiff
path: root/src/libutil
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-04-06 14:30:31 +0200
committerEelco Dolstra <edolstra@gmail.com>2017-04-06 14:30:31 +0200
commit256940fc48a6db950136fb0bc43590b701a3e857 (patch)
tree33ce2b1e13f0aba27d4046c5fa2364a758583520 /src/libutil
parent8decb07c31581febab664bedde12c8bf1367279e (diff)
nix-daemon: Disable path info cache
This is useless because the client also caches path info, and can cause problems for long-running clients like hydra-queue-runner (i.e. it may return cached info about paths that have been garbage-collected).
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/lru-cache.hh8
-rw-r--r--src/libutil/sync.hh1
2 files changed, 6 insertions, 3 deletions
diff --git a/src/libutil/lru-cache.hh b/src/libutil/lru-cache.hh
index 35983aa2c..3cb5d5088 100644
--- a/src/libutil/lru-cache.hh
+++ b/src/libutil/lru-cache.hh
@@ -11,7 +11,7 @@ class LRUCache
{
private:
- size_t maxSize;
+ size_t capacity;
// Stupid wrapper to get around circular dependency between Data
// and LRU.
@@ -27,14 +27,16 @@ private:
public:
- LRUCache(size_t maxSize) : maxSize(maxSize) { }
+ LRUCache(size_t capacity) : capacity(capacity) { }
/* Insert or upsert an item in the cache. */
void upsert(const Key & key, const Value & value)
{
+ if (capacity == 0) return;
+
erase(key);
- if (data.size() >= maxSize) {
+ if (data.size() >= capacity) {
/* Retire the oldest item. */
auto oldest = lru.begin();
data.erase(*oldest);
diff --git a/src/libutil/sync.hh b/src/libutil/sync.hh
index 2aa074299..611c900e0 100644
--- a/src/libutil/sync.hh
+++ b/src/libutil/sync.hh
@@ -33,6 +33,7 @@ public:
Sync() { }
Sync(const T & data) : data(data) { }
+ Sync(T && data) noexcept : data(std::move(data)) { }
class Lock
{