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/bazel#12927

    Closes #13061.

    PiperOrigin-RevId: 359250576
  • Loading branch information
Luca Di Grazia committed Sep 4, 2022
1 parent 5fd5cc1 commit 8d5a41c
Showing 1 changed file with 14 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,18 @@ void add(IOException e) {
boolean onlyCausedByCacheNotFoundException() {
return allCacheNotFoundException;
}

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 8d5a41c

Please sign in to comment.