Skip to content

Commit

Permalink
nix-store --serve: Implement log size limit
Browse files Browse the repository at this point in the history
  • Loading branch information
edolstra committed Oct 6, 2015
1 parent 9ffc4f4 commit 1abda8e
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 4 deletions.
3 changes: 2 additions & 1 deletion src/libstore/build.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2854,7 +2854,8 @@ void DerivationGoal::handleChildOutput(int fd, const string & data)
printMsg(lvlError,
format("%1% killed after writing more than %2% bytes of log output")
% getName() % settings.maxLogSize);
timedOut(); // not really a timeout, but close enough
killChild();
done(BuildResult::LogLimitExceeded);
return;
}
if (verbosity >= settings.buildVerbosity)
Expand Down
3 changes: 2 additions & 1 deletion src/libstore/store-api.hh
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ struct BuildResult
CachedFailure,
TimedOut,
MiscFailure,
DependencyFailed
DependencyFailed,
LogLimitExceeded,
} status = MiscFailure;
std::string errorMsg;
//time_t startTime = 0, stopTime = 0;
Expand Down
4 changes: 3 additions & 1 deletion src/nix-store/nix-store.cc
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ static void opServe(Strings opFlags, Strings opArgs)
if (magic != SERVE_MAGIC_1) throw Error("protocol mismatch");
out << SERVE_MAGIC_2 << SERVE_PROTOCOL_VERSION;
out.flush();
readInt(in); // Client version, unused for now
unsigned int clientVersion = readInt(in);

auto getBuildSettings = [&]() {
// FIXME: changing options here doesn't work if we're
Expand All @@ -863,6 +863,8 @@ static void opServe(Strings opFlags, Strings opArgs)
settings.useSubstitutes = false;
settings.maxSilentTime = readInt(in);
settings.buildTimeout = readInt(in);
if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
settings.maxLogSize = readInt(in);
};

while (true) {
Expand Down
2 changes: 1 addition & 1 deletion src/nix-store/serve-protocol.hh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace nix {
#define SERVE_MAGIC_1 0x390c9deb
#define SERVE_MAGIC_2 0x5452eecb

#define SERVE_PROTOCOL_VERSION 0x201
#define SERVE_PROTOCOL_VERSION 0x202
#define GET_PROTOCOL_MAJOR(x) ((x) & 0xff00)
#define GET_PROTOCOL_MINOR(x) ((x) & 0x00ff)

Expand Down

0 comments on commit 1abda8e

Please sign in to comment.