Anna Levenberg
Anna Levenberg
Running: `GOOGLE_CLOUD_CPP_ENABLE_TRACING=rpc,rpc-streams GOOGLE_CLOUD_CPP_ENABLE_CLOG=1 bazel run //google/cloud/pubsub/quickstart:expire` ``` ❯ bazel run //google/cloud/pubsub/quickstart:expire INFO: Build option --test_env has changed, discarding analysis cache. INFO: Analyzed target //google/cloud/pubsub/quickstart:expire (0 packages loaded, 6839 targets configured)....
It occurs right after the modack is cancelled at the end of the stream ``` 2024-04-22T17:30:53.962576908Z [DEBUG] AsyncModifyAckDeadline(7) >> status=CANCELLED: call cancelled (google/cloud/internal/log_wrapper.cc:29) ```
I think @coryan's link is correct. We want to check [ReadInitialMetadata](https://grpc.github.io/grpc/cpp/classgrpc_1_1internal_1_1_client_async_streaming_interface.html#ab5a35e289028ac2aaf062572ba6d567d) before calling `GetServerInitialMetadata` Our current stub interface does not include a AsyncStreamingInterface, but only the grpc::ClientContex
The protoc generated stub has ``` virtual ::grpc::ClientAsyncResponseReaderInterface< ::google::protobuf::Empty>* AsyncModifyAckDeadlineRaw(::grpc::ClientContext* context, const ::google::pubsub::v1::ModifyAckDeadlineRequest& request, ::grpc::CompletionQueue* cq) = 0; ``` ``` std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::google::protobuf::Empty>> AsyncModifyAckDeadline(::grpc::ClientContext* context, const ::google::pubsub::v1::ModifyAckDeadlineRequest& request, ::grpc::CompletionQueue* cq)...
``` Completion will be notified by tag on the associated completion queue. This call is optional, but if it is used, it cannot be used concurrently with or after the...
``` /// Prepare the operation to receive the response and start the RPC. template void Start(AsyncFunctionType async_call, // NOLINTNEXTLINE(performance-unnecessary-value-param) std::shared_ptr context, Request const& request, grpc::CompletionQueue* cq, void* tag) { promise_...
Note: darren also told me this is triggered in the EndSpan when we call GetAttributes(). So it might be worth trying to see what span is generated and triggering in...
I added the above to the Streaming read and that fixed the grpc assertion error. I will now add this information to the document
I tried applying the following patch ``` diff --git a/google/cloud/internal/grpc_opentelemetry.h b/google/cloud/internal/grpc_opentelemetry.h index 929b6935fb..c64be3154e 100644 --- a/google/cloud/internal/grpc_opentelemetry.h +++ b/google/cloud/internal/grpc_opentelemetry.h @@ -18,6 +18,7 @@ #include "google/cloud/completion_queue.h" #include "google/cloud/internal/grpc_metadata_view.h" #include "google/cloud/internal/opentelemetry.h" +#include "google/cloud/internal/status_utils.h"...
PR is ready for review