aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar olaola <olaola@google.com>2017-10-03 20:29:17 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-10-06 19:43:06 +0200
commit014408ead21d07bfa41af88b0dba251182e56aff (patch)
treecee808d911dd988aa8da97bbca43aaab5db27ec9 /src/main/java/com/google/devtools/build/lib
parentb7a64cb17e2b52ba099626ea8c27045b1ec1acb2 (diff)
Bugfix: some clients are passing invalid UUIDs as BAZEL_INTERNAL_BUILD_REQUEST_ID.
I added a check for build request id to be a valid UUID, and it broke them. TESTED=tap RELNOTES: None PiperOrigin-RevId: 170886183
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
index 655b7d6156..406f1c9efe 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
@@ -69,7 +69,7 @@ public final class CommandEnvironment {
private final BlazeDirectories directories;
private UUID commandId; // Unique identifier for the command being run
- private UUID buildRequestId; // Unique identifier for the build being run
+ private String buildRequestId; // Unique identifier for the build being run
private final Reporter reporter;
private final EventBus eventBus;
private final BlazeModule.ModuleEnvironment blazeModuleEnvironment;
@@ -246,7 +246,7 @@ public final class CommandEnvironment {
return Collections.unmodifiableMap(result);
}
- private UUID getFromEnvOrGenerate(String varName) {
+ private UUID getUuidFromEnvOrGenerate(String varName) {
// Try to set the clientId from the client environment.
String uuidString = clientEnv.getOrDefault(varName, "");
if (!uuidString.isEmpty()) {
@@ -261,6 +261,14 @@ public final class CommandEnvironment {
return UUID.randomUUID();
}
+ private String getFromEnvOrGenerate(String varName) {
+ String id = clientEnv.getOrDefault(varName, "");
+ if (id.isEmpty()) {
+ id = UUID.randomUUID().toString();
+ }
+ return id;
+ }
+
private void updateClientEnv(List<Map.Entry<String, String>> clientEnvList) {
Preconditions.checkState(clientEnv.isEmpty());
@@ -269,7 +277,7 @@ public final class CommandEnvironment {
clientEnv.put(entry.getKey(), entry.getValue());
}
if (commandId == null) {
- commandId = getFromEnvOrGenerate("BAZEL_INTERNAL_INVOCATION_ID");
+ commandId = getUuidFromEnvOrGenerate("BAZEL_INTERNAL_INVOCATION_ID");
}
if (buildRequestId == null) {
buildRequestId = getFromEnvOrGenerate("BAZEL_INTERNAL_BUILD_REQUEST_ID");
@@ -312,9 +320,10 @@ public final class CommandEnvironment {
}
/**
- * Returns the UUID that Blaze uses to identify everything logged from the current build request.
+ * Returns the ID that Blaze uses to identify everything logged from the current build request.
+ * TODO(olaola): this should be a UUID, but some existing clients still use arbitrary strings.
*/
- public UUID getBuildRequestId() {
+ public String getBuildRequestId() {
return Preconditions.checkNotNull(buildRequestId);
}