Add Bazel server process ID (pid) to the Build Event Protocol (BEP).

This field is also present in the master log and we're porting it to the BEP because
it's useful for tools to control the Bazel server process.

PiperOrigin-RevId: 214620730
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 7b64280..86ca6b5 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -580,6 +580,7 @@
         "//src/main/java/com/google/devtools/build/lib:keep-going-option",
         "//src/main/java/com/google/devtools/build/lib:os_util",
         "//src/main/java/com/google/devtools/build/lib:packages-internal",
+        "//src/main/java/com/google/devtools/build/lib:process_util",
         "//src/main/java/com/google/devtools/build/lib:skylark-provider-collection",
         "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
         "//src/main/java/com/google/devtools/build/lib:syntax",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/NoBuildEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/NoBuildEvent.java
index 270f2ee..8009e32 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/NoBuildEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/NoBuildEvent.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos;
 import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent;
 import com.google.devtools.build.lib.buildeventstream.ProgressEvent;
+import com.google.devtools.build.lib.util.ProcessUtils;
 import java.util.Collection;
 
 /** This event raised to indicate that no build will be happening for the given command. */
@@ -80,6 +81,7 @@
     if (id != null) {
       started.setUuid(id);
     }
+    started.setServerPid(ProcessUtils.getpid());
     return GenericBuildEvent.protoChaining(this).setStarted(started.build()).build();
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
index 7462b11..66759aa 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
@@ -301,6 +301,9 @@
 
   // The directory of the workspace.
   string workspace_directory = 7;
+
+  // The process ID of the Bazel server.
+  int64 server_pid = 8;
 }
 
 // Payload of an event reporting the command-line of the invocation as
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
index 2a92186..0601782 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
@@ -25,6 +25,7 @@
 import com.google.devtools.build.lib.buildtool.BuildRequest;
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.runtime.CommandLineEvent;
+import com.google.devtools.build.lib.util.ProcessUtils;
 import java.util.Collection;
 
 /**
@@ -101,7 +102,8 @@
             .setStartTimeMillis(request.getStartTime())
             .setBuildToolVersion(BlazeVersionInfo.instance().getVersion())
             .setOptionsDescription(request.getOptionsDescription())
-            .setCommand(request.getCommandName());
+            .setCommand(request.getCommandName())
+            .setServerPid(ProcessUtils.getpid());
     if (pwd != null) {
       started.setWorkingDirectory(pwd);
     }