Open thna123459 opened 3 years ago
This represents a particular entry not making it into the cache, and perhaps not because of the bazel client's doing - the size (131 versus 262) is suspect as a double-entry of expected content through the digest. I'll have a look at both client and server in this case to see if there's an oversight that would double up behavior.
To verify, are you working with shard or memory instance?
We are working with sharded instances (sharded workers and sharded servers, with a Redis cluster of 3 primaries/3 replicas)
Some troubleshooting could be done on the client if you manage to record the grpc log for a build that exhibits this failure - that would be invaluable in assigning blame (client or server). Use --experimental_remote_grpc_log=remote.log
to produce a log of all grpc requests, and that static file can be used to discern the number of requests made in the course of that upload.
You also might want to try FINER level logging (possibly only for WriteStreamObserver), assuming you can take the flood - this will record the literal writeData calls that result in handling things on the server side
If nobody has seen instances of the #608 exception presented, I'm going to close this for now, expecting that a new issue will get opened with that exception presentation to try to debug this further.
I will close this issue again when I'm satisfied that the fix works, prevents further recurrences of this, and has landed.
After applying the upstream fixes, we are still observing digest errors. Those should probably be reported as timeouts: remote.log
[10:41:52][Step 1/1] ERROR: /private/var/tmp/_bazel_-buildagent/79fb5de9b4a04bfbc5635a1d277a569c/external/bazel_tools/tools/jdk/BUILD:346:14: Action external/bazel_tools/tools/jdk/platformclasspath.jar failed: (Exit 34): com.google.devtools.build.lib.remote.BulkTransferException
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteCache.waitForBulkTransfer(RemoteCache.java:227)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteCache.download(RemoteCache.java:338)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteSpawnRunner.downloadAndFinalizeSpawnResult(RemoteSpawnRunner.java:487)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteSpawnRunner.exec(RemoteSpawnRunner.java:307)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.SpawnRunner.execAsync(SpawnRunner.java:240)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:140)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:102)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.actions.SpawnStrategy.beginExecution(SpawnStrategy.java:47)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.SpawnStrategyResolver.beginExecution(SpawnStrategyResolver.java:65)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.analysis.actions.SpawnAction.beginExecution(SpawnAction.java:331)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.actions.Action.execute(Action.java:127)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$5.execute(SkyframeActionExecutor.java:855)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.continueAction(SkyframeActionExecutor.java:1016)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.run(SkyframeActionExecutor.java:975)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionState.runStateMachine(ActionExecutionState.java:129)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionState.getResultOrDependOnFuture(ActionExecutionState.java:81)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.executeAction(SkyframeActionExecutor.java:472)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.checkCacheAndExecuteIfNeeded(ActionExecutionFunction.java:834)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.compute(ActionExecutionFunction.java:307)
[10:41:52][Step 1/1] at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:477)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
[10:41:52][Step 1/1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[10:41:52][Step 1/1] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[10:41:52][Step 1/1] at java.base/java.lang.Thread.run(Unknown Source)
[10:41:52][Step 1/1] Suppressed: java.io.IOException: Output download failed: Expected digest '7f6625c4a15695cbc99a54b8235a6e2ca5973222629d931a5725e45f9fdc0d22/102348070' does not match received digest '4727d17aa2ef1f83b72fc764fdf282be3cd8283ddf779d64cd9cd28f566c2212/103265574'.
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.util.Utils.verifyBlobContents(Utils.java:201)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.GrpcCacheClient$1.onCompleted(GrpcCacheClient.java:372)
[10:41:52][Step 1/1] at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:476)
[10:41:52][Step 1/1] at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.util.NetworkTime$NetworkTimeCall$1.onClose(NetworkTime.java:113)
[10:41:52][Step 1/1] at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.logging.LoggingInterceptor$LoggingForwardingCall$1.onClose(LoggingInterceptor.java:155)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:413)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl.access$500(ClientCallImpl.java:66)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:721)
[10:41:52][Step 1/1] at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
[10:41:52][Step 1/1] at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
[10:41:52][Step 1/1] ... 3 more
[10:41:52][Step 1/1] . Note: Remote connection/protocol failed with: execution failed com.google.devtools.build.lib.remote.BulkTransferException
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteCache.waitForBulkTransfer(RemoteCache.java:227)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteCache.download(RemoteCache.java:338)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteSpawnRunner.downloadAndFinalizeSpawnResult(RemoteSpawnRunner.java:487)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.RemoteSpawnRunner.exec(RemoteSpawnRunner.java:307)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.SpawnRunner.execAsync(SpawnRunner.java:240)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:140)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.AbstractSpawnStrategy.exec(AbstractSpawnStrategy.java:102)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.actions.SpawnStrategy.beginExecution(SpawnStrategy.java:47)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.exec.SpawnStrategyResolver.beginExecution(SpawnStrategyResolver.java:65)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.analysis.actions.SpawnAction.beginExecution(SpawnAction.java:331)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.actions.Action.execute(Action.java:127)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$5.execute(SkyframeActionExecutor.java:855)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.continueAction(SkyframeActionExecutor.java:1016)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor$ActionRunner.run(SkyframeActionExecutor.java:975)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionState.runStateMachine(ActionExecutionState.java:129)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionState.getResultOrDependOnFuture(ActionExecutionState.java:81)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.SkyframeActionExecutor.executeAction(SkyframeActionExecutor.java:472)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.checkCacheAndExecuteIfNeeded(ActionExecutionFunction.java:834)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.skyframe.ActionExecutionFunction.compute(ActionExecutionFunction.java:307)
[10:41:52][Step 1/1] at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:477)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:398)
[10:41:52][Step 1/1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[10:41:52][Step 1/1] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[10:41:52][Step 1/1] at java.base/java.lang.Thread.run(Unknown Source)
[10:41:52][Step 1/1] Suppressed: java.io.IOException: Output download failed: Expected digest '7f6625c4a15695cbc99a54b8235a6e2ca5973222629d931a5725e45f9fdc0d22/102348070' does not match received digest '4727d17aa2ef1f83b72fc764fdf282be3cd8283ddf779d64cd9cd28f566c2212/103265574'.
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.util.Utils.verifyBlobContents(Utils.java:201)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.GrpcCacheClient$1.onCompleted(GrpcCacheClient.java:372)
[10:41:52][Step 1/1] at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:476)
[10:41:52][Step 1/1] at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.util.NetworkTime$NetworkTimeCall$1.onClose(NetworkTime.java:113)
[10:41:52][Step 1/1] at io.grpc.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
[10:41:52][Step 1/1] at io.grpc.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
[10:41:52][Step 1/1] at com.google.devtools.build.lib.remote.logging.LoggingInterceptor$LoggingForwardingCall$1.onClose(LoggingInterceptor.java:155)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:413)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl.access$500(ClientCallImpl.java:66)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
[10:41:52][Step 1/1] at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:721)
[10:41:52][Step 1/1] at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
[10:41:52][Step 1/1] at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
[10:41:52][Step 1/1] ... 3 more
After applying the upstream fixes, we are still observing digest errors. Those should probably be reported as timeouts:
Except they're definitely not, and the direction of these problems are actually the reverse direction: This error is occuring upon download, and there's no timeout here, you're actually receiving more content than was asked for per the expected digest. It is difficult to prove that the former error is no longer happening with this output, but I'm confident saying that this is a completely different behavior that is exhibiting this new error, specifically in the read direction, rather than the write one.
I actually just noticed a similar error as well. Just for context, this happened on just a handful of tests after we turned off local fallback and forced all tests to execute remotely. So before they were just silently failing and falling back to local execution anyways. I'm guessing there is some underlying issue with the tests and not necessarily a buildfarm issue but wanted to update it here anyways since this issue was still open.
com.google.devtools.build.lib.remote.common.BulkTransferException: Error while uploading artifact with digest '6f638bfbb9c31ab2bd0ae8fafeead1c937e4044e/99376775' at com.google.devtools.build.lib.remote.util.RxUtils$BulkTransferExceptionCollector.onResult(RxUtils.java:91) at io.reactivex.rxjava3.internal.operators.flowable.FlowableCollectSingle$CollectSubscriber.onNext(FlowableCollectSingle.java:94) at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMapSingle$FlatMapSingleSubscriber.innerSuccess(FlowableFlatMapSingle.java:173) at io.reactivex.rxjava3.internal.operators.flowable.FlowableFlatMapSingle$FlatMapSingleSubscriber$InnerObserver.onSuccess(FlowableFlatMapSingle.java:342) at io.reactivex.rxjava3.internal.observers.ResumeSingleObserver.onSuccess(ResumeSingleObserver.java:46) at io.reactivex.rxjava3.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30) at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855) at io.reactivex.rxjava3.internal.operators.single.SingleResumeNext$ResumeMainSingleObserver.onError(SingleResumeNext.java:80) at io.reactivex.rxjava3.internal.operators.completable.CompletableToSingle$ToSingle.onError(CompletableToSingle.java:73) at io.reactivex.rxjava3.internal.operators.completable.CompletableFromSingle$CompletableFromSingleObserver.onError(CompletableFromSingle.java:41) at io.reactivex.rxjava3.internal.operators.single.SingleCreate$Emitter.tryOnError(SingleCreate.java:95) at io.reactivex.rxjava3.internal.operators.single.SingleCreate$Emitter.onError(SingleCreate.java:81) at com.google.devtools.build.lib.remote.util.AsyncTaskCache$1.onError(AsyncTaskCache.java:324) at com.google.devtools.build.lib.remote.util.AsyncTaskCache$Execution.onError(AsyncTaskCache.java:198) at io.reactivex.rxjava3.internal.operators.completable.CompletableToSingle$ToSingle.onError(CompletableToSingle.java:73) at io.reactivex.rxjava3.internal.operators.single.SingleFlatMapCompletable$FlatMapCompletableObserver.onError(SingleFlatMapCompletable.java:97) at io.reactivex.rxjava3.internal.operators.completable.CompletableCreate$Emitter.tryOnError(CompletableCreate.java:91) at io.reactivex.rxjava3.internal.operators.completable.CompletableCreate$Emitter.onError(CompletableCreate.java:77) at com.google.devtools.build.lib.remote.util.RxFutures$OnceCompletableOnSubscribe$1.onFailure(RxFutures.java:102) at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1066) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setFuture(AbstractFuture.java:814) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:203) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:179) at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:133) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771) at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:100) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771) at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:100) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setFuture(AbstractFuture.java:814) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:203) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:179) at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:133) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setFuture(AbstractFuture.java:814) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:203) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:179) at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:133) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setFuture(AbstractFuture.java:814) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:203) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.setResult(AbstractCatchingFuture.java:179) at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:133) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771) at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:100) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771) at com.google.devtools.build.lib.remote.util.RxFutures$CompletableFuture.setException(RxFutures.java:276) at com.google.devtools.build.lib.remote.util.RxFutures$2.onError(RxFutures.java:238) at io.reactivex.rxjava3.internal.operators.single.SingleFlatMap$SingleFlatMapCallback$FlatMapSingleObserver.onError(SingleFlatMap.java:117) at io.reactivex.rxjava3.internal.operators.single.SingleUsing$UsingSingleObserver.onError(SingleUsing.java:180) at io.reactivex.rxjava3.internal.operators.single.SingleCreate$Emitter.tryOnError(SingleCreate.java:95) at io.reactivex.rxjava3.internal.operators.single.SingleCreate$Emitter.onError(SingleCreate.java:81) at com.google.devtools.build.lib.remote.util.RxFutures$OnceSingleOnSubscribe$1.onFailure(RxFutures.java:172) at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1066) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1213) at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:983) at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:771) at com.google.common.util.concurrent.SettableFuture.setException(SettableFuture.java:53) at com.google.devtools.build.lib.remote.ByteStreamUploader$AsyncUpload$1.onClose(ByteStreamUploader.java:600) at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:557) at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:69) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:738) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:717) at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) Suppressed: java.io.IOException: Error while uploading artifact with digest '6f638bfbb9c31ab2bd0ae8fafeead1c937e4044e/99376775' at com.google.devtools.build.lib.remote.ByteStreamUploader.lambda$uploadBlobAsync$1(ByteStreamUploader.java:277) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.doFallback(AbstractCatchingFuture.java:192) at com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture.doFallback(AbstractCatchingFuture.java:179) at com.google.common.util.concurrent.AbstractCatchingFuture.run(AbstractCatchingFuture.java:124) ... 63 more Caused by: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: computed digest be214f30e934e4cc942736ee2a2f77937416047b/99376775 does not match expected 6f638bfbb9c31ab2bd0ae8fafeead1c937e4044e/99376775 at io.grpc.Status.asRuntimeException(Status.java:526) ... 10 more
We are observing frequent instances of the following BulkTransferException error in both production and in our testing environments:
Is there a way to troubleshoot this? Is there a way to clear specific cache entries once such errors happen?