aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildeventstream
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-07-11 12:21:23 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-11 12:23:00 -0700
commitfb8332ff6ee990fccc98548e12b200359b3114f8 (patch)
tree03a4cb6f79808f6803e3dd51fb23b03d76d17fb9 /src/main/java/com/google/devtools/build/lib/buildeventstream
parente169b94ce9b0e964b8edd231ef7eb3bed1cd2ccf (diff)
Omit parts of BEP events (like stdout, stderr) when the associated artifact uploader cannot upload a particular file.
RELNOTES: None PiperOrigin-RevId: 204167372
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildeventstream')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/PathConverter.java26
2 files changed, 23 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
index 8ac55d6db2..eb5358b7f5 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
@@ -62,11 +62,14 @@ public class BuildToolLogs implements BuildEventWithOrderConstraint {
.build());
}
for (Pair<String, Path> logFile : logFiles) {
- toolLogs.addLog(
- BuildEventStreamProtos.File.newBuilder()
- .setName(logFile.getFirst())
- .setUri(converters.pathConverter().apply(logFile.getSecond()))
- .build());
+ String uri = converters.pathConverter().apply(logFile.getSecond());
+ if (uri != null) {
+ toolLogs.addLog(
+ BuildEventStreamProtos.File.newBuilder()
+ .setName(logFile.getFirst())
+ .setUri(uri)
+ .build());
+ }
}
return GenericBuildEvent.protoChaining(this).setBuildToolLogs(toolLogs.build()).build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/PathConverter.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/PathConverter.java
index a1aaf31d40..b09073ff97 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/PathConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/PathConverter.java
@@ -18,22 +18,21 @@ import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.vfs.Path;
import java.net.URI;
import java.net.URISyntaxException;
+import javax.annotation.Nullable;
/**
* Interface for conversion of paths to URIs.
*/
public interface PathConverter {
/** An implementation that throws on every call to {@link #apply(Path)}. */
- public static final PathConverter NO_CONVERSION = new PathConverter() {
- @Override
- public String apply(Path path) {
- throw new IllegalStateException(
- String.format(
- "Can't convert '%s', as it has not been"
- + "declared as a referenced artifact of a build event",
- path.getPathString()));
- }
- };
+ PathConverter NO_CONVERSION =
+ path -> {
+ throw new IllegalStateException(
+ String.format(
+ "Can't convert '%s', as it has not been"
+ + "declared as a referenced artifact of a build event",
+ path.getPathString()));
+ };
/** A {@link PathConverter} that returns a path formatted as a URI with a {@code file} scheme. */
// TODO(ulfjack): Make this a static final field.
@@ -81,7 +80,12 @@ public interface PathConverter {
/**
* Return the URI corresponding to the given path.
*
- * <p>This method must not return {@code null}.
+ * <p>This method may return null, in which case the associated {@link BuildEventArtifactUploader}
+ * was permanently unable to upload the file. The file should be omitted from the BEP stream.
+ *
+ * <p>This method may throw {@link IllegalStateException} if it is passed a path that
+ * wasn't declared in {@link BuildEvent#referencedLocalFiles()}.
*/
+ @Nullable
String apply(Path path);
}