diff options
author | olaola <olaola@google.com> | 2017-10-03 20:29:17 +0200 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2017-10-06 19:43:06 +0200 |
commit | 014408ead21d07bfa41af88b0dba251182e56aff (patch) | |
tree | cee808d911dd988aa8da97bbca43aaab5db27ec9 /src/main/java/com/google/devtools/build/lib | |
parent | b7a64cb17e2b52ba099626ea8c27045b1ec1acb2 (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.java | 19 |
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); } |