mirror of
https://github.com/NixOS/nix
synced 2025-06-28 17:51:15 +02:00
* Revert r19797, and use a simpler solution: just don't monitor build
hooks for silence. It's unnecessary because the remote nix-store command is already monitoring the real build.
This commit is contained in:
parent
f859a8d3c3
commit
4e17be7981
4 changed files with 21 additions and 37 deletions
|
@ -37,8 +37,7 @@ void deleteLockFile(const Path & path, int fd)
|
|||
}
|
||||
|
||||
|
||||
bool lockFile(int fd, LockType lockType, bool wait,
|
||||
unsigned int progressInterval)
|
||||
bool lockFile(int fd, LockType lockType, bool wait)
|
||||
{
|
||||
struct flock lock;
|
||||
if (lockType == ltRead) lock.l_type = F_RDLCK;
|
||||
|
@ -50,20 +49,11 @@ bool lockFile(int fd, LockType lockType, bool wait,
|
|||
lock.l_len = 0; /* entire file */
|
||||
|
||||
if (wait) {
|
||||
/* Wait until we acquire the lock. If `progressInterval' is
|
||||
non-zero, when print a message every `progressInterval'
|
||||
seconds. This is mostly to make sure that remote builders
|
||||
aren't killed due to the `max-silent-time' inactivity
|
||||
monitor while waiting for the garbage collector lock. */
|
||||
while (1) {
|
||||
if (progressInterval) alarm(progressInterval);
|
||||
if (fcntl(fd, F_SETLKW, &lock) == 0) break;
|
||||
while (fcntl(fd, F_SETLKW, &lock) != 0) {
|
||||
checkInterrupt();
|
||||
if (errno != EINTR)
|
||||
throw SysError(format("acquiring/releasing lock"));
|
||||
if (progressInterval) printMsg(lvlError, "still waiting for lock...");
|
||||
}
|
||||
alarm(0);
|
||||
} else {
|
||||
while (fcntl(fd, F_SETLK, &lock) != 0) {
|
||||
checkInterrupt();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue