code: public void handleBlockCompleteRequest(boolean isCanceled) {
      final String methodName = isCanceled ? "AbortBlock" : "CommitBlock";
      RpcUtils.streamingRPCAndLog(LOG, new RpcUtils.StreamingRpcCallable<CreateLocalBlockResponse>() {
        @Override
        public CreateLocalBlockResponse call() throws Exception {
          if (mRequest == null) {
            return null;
          }
          Context newContext = Context.current().fork();
          Context previousContext = newContext.attach();
          try {
            if (isCanceled) {
              mBlockWorker.abortBlock(mSessionId, mRequest.getBlockId());
            } else {
              mBlockWorker.commitBlock(mSessionId, mRequest.getBlockId());
            }
          } finally {
            newContext.detach(previousContext);
          }
          mSessionId = INVALID_SESSION_ID;
          return null;
        }
  
        @Override
        public void exceptionCaught(Throwable throwable) {
          mResponseObserver.onError(GrpcExceptionUtils.fromThrowable(throwable));
          mSessionId = INVALID_SESSION_ID;
        }
      }, methodName, false, !isCanceled, mResponseObserver, "Session=%d, Request=%s", mSessionId,
          mRequest);
    }
docs: Handles complete block request. No exceptions should be thrown.