diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2016-11-24 10:28:20 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-11-24 13:33:24 +0000 |
commit | 6450c187591bfbbd65766076f65f7c2901cc99bb (patch) | |
tree | 7f5e4025456b7e1b45f1de77f4efcfb8ed3388c2 /src/main/cpp/blaze_util_posix.cc | |
parent | 607030b642b26d3916555a983f1b343a71c63920 (diff) |
Bazel client: delete and don't use the server.pid
Upon startup the Bazel client checks if there's
already a running server process and if so then
connects to it.
We achieve this by checking if there's a symlink
in the server directory called served.pid,
pointing to /proc/<server_pid>. If so, we read the
symlink's target and extract the PID; otherwise we
check if there's a file in the server's directory
(server.pid.txt) that contains the PID and read it
from there.
Since the PID file is always there, we don't need
the symlink, plus on Windows we don't support
symlinks anyway, which is the real motivation for
this change.
Just ignoring the PID symlink is not enough, we
need to actively delete it so that switching
between Bazel versions (one that writes a PID
symlink and one that doesn't) won't result in
having a symlink and PID file with different
PIDs and clients trying to kill the wrong server
process / not killing one that they should.
See https://github.com/bazelbuild/bazel/issues/2107
--
MOS_MIGRATED_REVID=140117287
Diffstat (limited to 'src/main/cpp/blaze_util_posix.cc')
-rw-r--r-- | src/main/cpp/blaze_util_posix.cc | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/src/main/cpp/blaze_util_posix.cc b/src/main/cpp/blaze_util_posix.cc index 55cb59b563..b5d8caf47e 100644 --- a/src/main/cpp/blaze_util_posix.cc +++ b/src/main/cpp/blaze_util_posix.cc @@ -160,7 +160,6 @@ void ExecuteDaemon(const string& exe, Daemonize(daemon_output); string pid_string = GetProcessIdAsString(); string pid_file = blaze_util::JoinPath(server_dir, kServerPidFile); - string pid_symlink_file = blaze_util::JoinPath(server_dir, kServerPidSymlink); if (!WriteFile(pid_string, pid_file)) { // The exit code does not matter because we are already in the daemonized @@ -168,11 +167,6 @@ void ExecuteDaemon(const string& exe, pdie(0, "Cannot write PID file"); } - UnlinkPath(pid_symlink_file.c_str()); - if (symlink(pid_string.c_str(), pid_symlink_file.c_str()) < 0) { - pdie(0, "Cannot write PID symlink"); - } - WriteSystemSpecificProcessIdentifier(server_dir); ExecuteProgram(exe, args_vector); |