diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputMap.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputMap.java index 04b54a891b2c8a..19094501e47847 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputMap.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputMap.java @@ -471,9 +471,9 @@ public String toString() { return MoreObjects.toStringHelper(this) .add("size", size) .add("all-files", sizeForDebugging()) - .add("first-fifty-keys", Arrays.stream(keys).limit(50).collect(toList())) - .add("first-fifty-values", Arrays.stream(values).limit(50).collect(toList())) - .add("first-fifty-paths", Arrays.stream(paths).limit(50).collect(toList())) + .add("first-fifty-keys", Arrays.stream(keys).collect(toList())) + .add("first-fifty-values", Arrays.stream(values).collect(toList())) + .add("first-fifty-paths", Arrays.stream(paths).collect(toList())) .toString(); } diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java index d7f7c56a4cb701..0876b19523d3fb 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java @@ -604,8 +604,15 @@ private SpawnResult execLocallyAndUploadOrFail( // remotely, try to regenerate the lost inputs. This doesn't make sense for outputs of the // current action. if (reason == FailureReason.UPLOAD && cause instanceof BulkTransferException e) { - ImmutableMap lostInputs = - e.getLostInputs(context.getInputMetadataProvider()::getInput); + ImmutableMap lostInputs; + try { + lostInputs = e.getLostInputs(context.getInputMetadataProvider()::getInput); + } catch (RuntimeException re) { + System.err.printf( + "Action: %s%nSpawn: %s%nIMP: %s%n", + spawn.getResourceOwner(), spawn, context.getInputMetadataProvider()); + throw re; + } if (!lostInputs.isEmpty()) { throw new LostInputsExecException( lostInputs, new ActionInputDepOwnerMap(lostInputs.values())); diff --git a/src/main/java/com/google/devtools/build/lib/remote/common/BulkTransferException.java b/src/main/java/com/google/devtools/build/lib/remote/common/BulkTransferException.java index 902bcf7078d64b..ba526c84ba250a 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/common/BulkTransferException.java +++ b/src/main/java/com/google/devtools/build/lib/remote/common/BulkTransferException.java @@ -89,8 +89,11 @@ public ImmutableMap getLostInputs( var execPath = e.getExecPath(); checkNotNull(execPath, "exec path not known for action input with digest %s", missingDigest); var actionInput = actionInputResolver.apply(execPath.getPathString()); - checkNotNull( - actionInput, "ActionInput not found for filename %s in CacheNotFoundException", execPath); + if (actionInput == null) { + throw new IllegalStateException( + "ActionInput not found for filename %s in CacheNotFoundException".formatted(execPath), + this); + } lostInputs.put(DigestUtil.toString(missingDigest), actionInput); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMetadataProvider.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMetadataProvider.java index 68bab8c8f1b950..4603b6b9577281 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMetadataProvider.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMetadataProvider.java @@ -118,6 +118,7 @@ public ActionInput getInput(String execPath) { @Override public String toString() { return MoreObjects.toStringHelper(this) + .add("inputArtifactData", inputArtifactData) .add("inputArtifactDataSize", inputArtifactData.sizeForDebugging()) .toString(); }