Skip to content

Commit 9c182de

Browse files
scelephilwo
authored andcommitted
Implement getMessage for BulkTransferException
Before this change, BulkTransferExceptions would be reported like this: ``` Executing genrule //:foo failed: Exec failed due to IOException: null ``` By implementing getMessage(), we get a more informative message, in the case when there is only one suppressed exception: ``` Executing genrule //:foo failed: Exec failed due to IOException: Output download failed: Expected digest '8a39d2abd3999ab73c34db2476849cddf303ce389b35826850f9a700589b4a90/262144' does not match received digest 'dae4d3dce1bb0a9414f61a65ee07622fa225ec01e6efe6df6e78f9ad5c58480d/327680'. ``` and in the case when there are multiple suppressed exceptions: ``` Executing genrule //:foo failed: Exec failed due to IOException: 2 errors during bulk transfer ``` This helps diagnosing issues like #12927 Closes #13061. PiperOrigin-RevId: 359250576
1 parent f7c6f2a commit 9c182de

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/main/java/com/google/devtools/build/lib/remote/BulkTransferException.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,13 @@ static boolean isOnlyCausedByCacheNotFoundException(Exception e) {
5151
return e instanceof BulkTransferException
5252
&& ((BulkTransferException) e).onlyCausedByCacheNotFoundException();
5353
}
54+
55+
@Override
56+
public String getMessage() {
57+
// If there is only one suppressed exception, displaying that in the message should be helpful.
58+
if (super.getSuppressed().length == 1) {
59+
return super.getSuppressed()[0].getMessage();
60+
}
61+
return String.format("%d errors during bulk transfer", super.getSuppressed().length);
62+
}
5463
}

0 commit comments

Comments
 (0)