Thank you for the reply. I think my problem was due to me not using correct lifetimes, the “response” I was using was not as long-lived as the rpc call. Anyway, it is resolved now.
Στις Τετάρτη 2 Απριλίου 2025 στις 4:01:50 π.μ. UTC+2, ο χρήστης [email protected] έγραψε: > Hi, Please take a look at > https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md for > information on how to get more detailed logging. > > If something in gRPC triggered the socket closure, you might see some more > details in the logs. This might also be a case where gRPC did not do a good > job of propagating the real error, and if that's the case, please raise an > issue at https://github.com/grpc/grpc/. On the other hand, if this is > something that was caused by a network failure or remote trouble, gRPC logs > won't be able to tell you much. > > On Friday, March 21, 2025 at 8:26:04 AM UTC-7 Konstantina Skovola wrote: > >> Hi! >> >> I am using the grpc c++ async callback API for my application and I don't >> know how to get more details about the following error: >> >> On the server side I write the streaming response like this: >> >> ``` >> cta::xrd::Response *header = new cta::xrd::Response(); >> header->set_type(cta::xrd::Response::RSP_SUCCESS); >> header->set_show_header(cta::admin::HeaderType::TAPE_LS); >> response.set_allocated_header(header); // now the message takes ownership >> of the allocated object, we don't need to free header >> >> std::cout << "about to call StartWrite on the server side" << std::endl; >> StartWrite(&response); // this will trigger OnWriteDone >> std::cout << "called StartWrite on the server" << std::endl; >> ``` >> >> On the client side, I make the call like this >> ``` >> std::cout << "In CtaAdminClientReadReactor, about to call the async >> GenericAdminStream" << std::endl; >> client_stub->async()->GenericAdminStream(&m_context, request, this); >> std::cout << "Started the request to the server by calling >> GenericAdminStream" << std::endl; >> StartRead(&m_response); // where to store the received response? >> std::cout << "In CtaAdminClientReadReactor, called startRead" << >> std::endl; >> StartCall(); // activate the RPC! >> std::cout << "In CtaAdminClientReadReactor, called StartCall()" << >> std::endl; >> ``` >> >> and then read the streaming response: >> >> ``` >> virtual void OnReadDone(bool ok) override { >> std::cout << "In CtaAdminCmdStream, inside OnReadDone() " << >> std::endl; >> if (!ok) { >> std::cout << "Something went wrong with reading the response >> in the client" << std::endl; >> } else { >> // if this is the header, print the formatted header >> if (m_response.has_header()) { >> std::cout << "We received the header on the client side " >> << std::endl; >> switch (m_response.header().type()) { >> ....... >> ``` >> >> Using debug prints, from the output, I can see that on the server side, >> StartWrite() is called just once, then on the client side, the first time >> OnReadDone is called, it goes into the “not ok” branch. >> >> The error code and message the rpc returns is “Error code: 14, Error >> message: Socket closed”. >> >> How can I get more insights on where things go wrong? I have enabled >> debug logging but it seems not much is logged by the async callback API. >> >> Any pointers will be greatly appreciated! >> Many thanks, >> Konstantina >> > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/grpc-io/25c6e92f-7830-4d3b-b8b7-918abc48ff20n%40googlegroups.com.
