nix-store --serve: Implement log size limit
This commit is contained in:
parent
9ffc4f4363
commit
1abda8e173
4 changed files with 8 additions and 4 deletions
|
@ -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)
|
||||
|
|
|
@ -112,7 +112,8 @@ struct BuildResult
|
|||
CachedFailure,
|
||||
TimedOut,
|
||||
MiscFailure,
|
||||
DependencyFailed
|
||||
DependencyFailed,
|
||||
LogLimitExceeded,
|
||||
} status = MiscFailure;
|
||||
std::string errorMsg;
|
||||
//time_t startTime = 0, stopTime = 0;
|
||||
|
|
|
@ -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
|
||||
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue