diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-09-14 18:10:38 +0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-09-14 18:10:38 +0200 |
commit | 89dc62c1745950748084a763ea325bc427045e07 (patch) | |
tree | b31517cd86f5da52cb34ce788d4b219a49fc35d7 /src/libutil/pool.hh | |
parent | 308ecf63611c858327f163a154a3216fd6195ed9 (diff) |
RemoteStore: Add option to drop old connections from the pool
This is a hack to make hydra-queue-runner free its temproots
periodically, thereby ensuring that garbage collection of the
corresponding paths is not blocked until the queue runner is
restarted.
It would be better if temproots could be released earlier than at
process exit. I started working on a RAII object returned by functions
like addToStore() that releases temproots. However, this would be a
pretty massive change so I gave up on it for now.
Diffstat (limited to 'src/libutil/pool.hh')
-rw-r--r-- | src/libutil/pool.hh | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libutil/pool.hh b/src/libutil/pool.hh index 703309002..0b142b059 100644 --- a/src/libutil/pool.hh +++ b/src/libutil/pool.hh @@ -168,6 +168,16 @@ public: { return state.lock()->max; } + + void flushBad() + { + auto state_(state.lock()); + std::vector<ref<R>> left; + for (auto & p : state_->idle) + if (validator(p)) + left.push_back(p); + std::swap(state_->idle, left); + } }; } |