Add Store nesting to fix import-from-derivation within filterSource

This commit is contained in:
Shea Levy 2017-04-26 12:38:16 -04:00
parent 98a2adb135
commit 4bc00760f9
2 changed files with 18 additions and 0 deletions

View file

@ -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) {

View file

@ -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());