Skip to content

Commit

Permalink
Implement getMessage for BulkTransferException
Browse files Browse the repository at this point in the history
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 bazelbuild#12927

Closes bazelbuild#13061.

PiperOrigin-RevId: 359250576
  • Loading branch information
scele authored and Copybara-Service committed Feb 24, 2021
1 parent 45d82ca commit 17afbe4
Showing 1 changed file with 9 additions and 0 deletions.
Expand Up @@ -51,4 +51,13 @@ static boolean isOnlyCausedByCacheNotFoundException(Exception e) {
return e instanceof BulkTransferException
&& ((BulkTransferException) e).onlyCausedByCacheNotFoundException();
}

@Override
public String getMessage() {
// If there is only one suppressed exception, displaying that in the message should be helpful.
if (super.getSuppressed().length == 1) {
return super.getSuppressed()[0].getMessage();
}
return String.format("%d errors during bulk transfer", super.getSuppressed().length);
}
}

0 comments on commit 17afbe4

Please sign in to comment.