aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2017-04-26 20:28:49 +0200
committerGitHub <noreply@github.com>2017-04-26 20:28:49 +0200
commit39b08f4c0c8851d96daa2b7d4e674b13c75afec7 (patch)
tree6285cec1e9e4541740e7bf78c2df9eb58d6b8f9c /src
parent45ce2c7413bf8c87aa7d5bc70a5a1c920c40a3b8 (diff)
parent4bc00760f9bc36d5b4e8bba7de9bd71a30d7f31a (diff)
Merge pull request #1358 from shlevy/store-nesting
Add Store nesting to fix import-from-derivation within filterSource
Diffstat (limited to 'src')
-rw-r--r--src/libstore/remote-store.cc2
-rw-r--r--src/libutil/pool.hh16
2 files changed, 18 insertions, 0 deletions
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index bc9ef3d47..af59d5110 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -414,7 +414,9 @@ Path RemoteStore::addToStore(const string & name, const Path & _srcPath,
try {
conn->to.written = 0;
conn->to.warn = true;
+ connections->incCapacity();
dumpPath(srcPath, conn->to, filter);
+ connections->decCapacity();
conn->to.warn = false;
conn->processStderr();
} catch (SysError & e) {
diff --git a/src/libutil/pool.hh b/src/libutil/pool.hh
index 20df21948..703309002 100644
--- a/src/libutil/pool.hh
+++ b/src/libutil/pool.hh
@@ -68,6 +68,22 @@ public:
state_->max = max;
}
+ void incCapacity()
+ {
+ auto state_(state.lock());
+ state_->max++;
+ /* we could wakeup here, but this is only used when we're
+ * about to nest Pool usages, and we want to save the slot for
+ * the nested use if we can
+ */
+ }
+
+ void decCapacity()
+ {
+ auto state_(state.lock());
+ state_->max--;
+ }
+
~Pool()
{
auto state_(state.lock());