aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildeventservice
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-11-07 19:09:52 +0100
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-11-07 20:57:00 +0100
commit62c9474f5cb56b152de36000e12159903e523536 (patch)
tree7e8c4428f717c6c235fd8008e4a37c1dba51a339 /src/main/java/com/google/devtools/build/lib/buildeventservice
parentc439ae1365562f2224c208ed168dcc786904caae (diff)
Prefix all --bes_keywords with "user_keyword=<keyword>" before publishing to BES.
- Add a prefix to user provided keywords, so it can be distinguished from keywords provided directly by Bazel. - Keywords are also stored in a Set to avoid duplicates. PiperOrigin-RevId: 174872442
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildeventservice')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceProtoUtil.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java6
4 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
index 0df599426b..22efe8e79d 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java
@@ -230,7 +230,7 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions
pathConverter,
commandLineReporter,
besOptions.projectId,
- besOptions.besKeywords);
+ keywords(besOptions));
logger.fine("BuildEventServiceTransport was created successfully");
return besTransport;
}
@@ -249,4 +249,12 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions
AuthAndTLSOptions authAndTLSOptions) throws IOException;
protected abstract Set<String> whitelistedCommands();
+
+ protected Set<String> keywords(T besOptions) {
+ return besOptions
+ .besKeywords
+ .stream()
+ .map(keyword -> "user_keyword=" + keyword)
+ .collect(ImmutableSet.toImmutableSet());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
index e0c86e24d1..fda0ac936c 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceOptions.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.buildeventservice;
+import com.google.devtools.common.options.Converters;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionEffectTag;
@@ -81,6 +82,7 @@ public class BuildEventServiceOptions extends OptionsBase {
@Option(
name = "bes_keywords",
defaultValue = "",
+ converter = Converters.CommaSeparatedOptionListConverter.class,
documentationCategory = OptionDocumentationCategory.LOGGING,
effectTags = {OptionEffectTag.AFFECTS_OUTPUTS},
allowMultiple = true,
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceProtoUtil.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceProtoUtil.java
index 022d29258a..a6c23c3e7e 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceProtoUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceProtoUtil.java
@@ -17,7 +17,7 @@ package com.google.devtools.build.lib.buildeventservice;
import static com.google.devtools.build.v1.BuildEvent.BuildComponentStreamFinished.FinishType.FINISHED;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.clock.Clock;
import com.google.devtools.build.v1.BuildEvent;
import com.google.devtools.build.v1.BuildEvent.BuildComponentStreamFinished;
@@ -35,7 +35,7 @@ import com.google.devtools.build.v1.StreamId;
import com.google.devtools.build.v1.StreamId.BuildComponent;
import com.google.protobuf.Any;
import com.google.protobuf.util.Timestamps;
-import java.util.List;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
@@ -48,7 +48,7 @@ public final class BuildEventServiceProtoUtil {
private final AtomicInteger streamSequenceNumber;
private final String commandName;
private final Clock clock;
- private final List<String> additionalKeywords;
+ private final Set<String> additionalKeywords;
public BuildEventServiceProtoUtil(
String buildRequestId,
@@ -56,7 +56,7 @@ public final class BuildEventServiceProtoUtil {
@Nullable String projectId,
String commandName,
Clock clock,
- List<String> additionalKeywords) {
+ Set<String> additionalKeywords) {
this.buildRequestId = buildRequestId;
this.buildInvocationId = buildInvocationId;
this.projectId = projectId;
@@ -192,8 +192,8 @@ public final class BuildEventServiceProtoUtil {
}
/** Keywords used by BES subscribers to filter notifications */
- private ImmutableList<String> getKeywords() {
- return ImmutableList.<String>builder()
+ private ImmutableSet<String> getKeywords() {
+ return ImmutableSet.<String>builder()
.add("command_name=" + commandName)
.add("protocol_name=BEP")
.addAll(additionalKeywords)
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
index 3aba07f73d..9f603fc0d6 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceTransport.java
@@ -58,7 +58,7 @@ import com.google.protobuf.Any;
import io.grpc.Status;
import java.time.Duration;
import java.util.Deque;
-import java.util.List;
+import java.util.Set;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentLinkedDeque;
@@ -133,7 +133,7 @@ public class BuildEventServiceTransport implements BuildEventTransport {
PathConverter pathConverter,
EventHandler commandLineReporter,
@Nullable String projectId,
- List<String> keywords) {
+ Set<String> keywords) {
this(besClient, uploadTimeout, bestEffortUpload, publishLifecycleEvents, buildRequestId,
invocationId, command, moduleEnvironment, clock, pathConverter, commandLineReporter,
projectId, keywords, new JavaSleeper());
@@ -153,7 +153,7 @@ public class BuildEventServiceTransport implements BuildEventTransport {
PathConverter pathConverter,
EventHandler commandLineReporter,
@Nullable String projectId,
- List<String> keywords,
+ Set<String> keywords,
Sleeper sleeper) {
this.besClient = besClient;
this.besProtoUtil = new BuildEventServiceProtoUtil(