diff options
author | eldritch horrors <pennae@lix.systems> | 2024-08-13 15:34:55 +0200 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-08-19 09:13:44 +0000 |
commit | 5e9db0976158e6990c99fe3cb1b2ec0bd41d7d28 (patch) | |
tree | 56ffcd005d88c6ea54517ae2f4862621bc855308 /src/libstore/build/derivation-goal.cc | |
parent | e513cd2bebe6c4ed012bd4d2e92650c67f0df4bf (diff) |
libstore: downsize hook pipes
don't keep fds open we're not using. currently this does not cause any
problems, but it does increase the size of our fd table needlessly and
in the future, when we have proper async processing, having builderOut
open in the daemon once the hook has been fully started is problematic
Change-Id: I6e7fb773b280b042873103638d3e04272ca1e4fc
Diffstat (limited to 'src/libstore/build/derivation-goal.cc')
-rw-r--r-- | src/libstore/build/derivation-goal.cc | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc index 2781929e7..b7f8005ae 100644 --- a/src/libstore/build/derivation-goal.cc +++ b/src/libstore/build/derivation-goal.cc @@ -822,8 +822,8 @@ int DerivationGoal::getChildStatus() void DerivationGoal::closeReadPipes() { - hook->builderOut.readSide.reset(); - hook->fromHook.readSide.reset(); + hook->builderOut.reset(); + hook->fromHook.reset(); builderOutFD = nullptr; } @@ -1135,7 +1135,7 @@ HookReply DerivationGoal::tryBuildHook(bool inBuildSlot) while (true) { auto s = [&]() { try { - return readLine(worker.hook.instance->fromHook.readSide.get()); + return readLine(worker.hook.instance->fromHook.get()); } catch (Error & e) { e.addTrace({}, "while reading the response from the build hook"); throw; @@ -1171,7 +1171,7 @@ HookReply DerivationGoal::tryBuildHook(bool inBuildSlot) if (e.errNo == EPIPE) { printError( "build hook died unexpectedly: %s", - chomp(drainFD(worker.hook.instance->fromHook.readSide.get()))); + chomp(drainFD(worker.hook.instance->fromHook.get()))); worker.hook.instance.reset(); return rpDecline; } else @@ -1181,7 +1181,7 @@ HookReply DerivationGoal::tryBuildHook(bool inBuildSlot) hook = std::move(worker.hook.instance); try { - machineName = readLine(hook->fromHook.readSide.get()); + machineName = readLine(hook->fromHook.get()); } catch (Error & e) { e.addTrace({}, "while reading the machine name from the build hook"); throw; @@ -1204,15 +1204,15 @@ HookReply DerivationGoal::tryBuildHook(bool inBuildSlot) } hook->sink = FdSink(); - hook->toHook.writeSide.reset(); + hook->toHook.reset(); /* Create the log file and pipe. */ Path logFile = openLogFile(); std::set<int> fds; - fds.insert(hook->fromHook.readSide.get()); - fds.insert(hook->builderOut.readSide.get()); - builderOutFD = &hook->builderOut.readSide; + fds.insert(hook->fromHook.get()); + fds.insert(hook->builderOut.get()); + builderOutFD = &hook->builderOut; worker.childStarted(shared_from_this(), fds, false); return rpAccept; @@ -1309,7 +1309,7 @@ Goal::WorkResult DerivationGoal::handleChildOutput(int fd, std::string_view data return StillAlive{}; } - if (hook && fd == hook->fromHook.readSide.get()) { + if (hook && fd == hook->fromHook.get()) { for (auto c : data) if (c == '\n') { auto json = parseJSONMessage(currentHookLine); |