Thanks Craig for your response. In my design, I have one thread where I start the grpc server and wait on completion queue for events. As soon, any client connects I store the AsynWriter pointer on a map and from some other thread I am doing a post on that AsyncWriter every 5 secs. is this a wrong design? I agree with this design, the thread which is doing a write can start a new write again instead of waiting for an old write to complete. Could you please suggest any changes fix this?
Thanks Chaitanya On Monday, 27 March 2017 19:10:23 UTC+5:30, Craig Tiller wrote: > > It looks like you're trying to start a new write while there's one already > outstanding. This is unsupported and will crash (although we should > admittedly give better messaging). > > You need to ensure that the previous write has delivered it's tag back via > the completion queue before starting a new one. > > On Sun, Mar 26, 2017, 11:47 PM Chaitanya Gangwar <[email protected]> > wrote: > >> Hi , >> >> I am seeing following a crash in grpc code. I have 5 node setup, where >> all nodes are streaming out data. After few hours of streaming, I am seeing >> a crash on 2 nodes but rest 3 nodes are working fine. It is not always >> reproducible. Looks like some timing issue. Below is the crash : >> >> #0 0x7438e660 in __GI_raise (sig=sig@entry=6) >> >> at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 >> >> #1 0x743900ae in __GI_abort () at abort.c:92 >> >> #2 0x748b847a in >> grpc::Server::PerformOpsOnCall(grpc::CallOpSetInterface*, grpc::Call*) () >> from /usr/local/grpc/1.1.0/lib/libgrpc++_unsecure.so.1 >> >> #3 0x74a20c97 in PerformOps (ops=<optimized out>, this=<optimized out>) >> >> at >> oss-binaries-x86-gcc-4.8.2-glibc-2.13/usr/local/grpc/1.1.0/include/grpc++/impl/codegen/call.h:669 >> >> #4 Write (tag=<optimized out>, msg=..., this=<optimized out>) >> >> at >> oss-binaries-x86-gcc-4.8.2-glibc-2.13/usr/local/grpc/1.1.0/include/grpc++/impl/codegen/async_stream.h:431 >> >> #5 >> WaveGrpcClientInfo<com::telemetry::interface::InterfaceStatisticsProfileResponse>::postDataToClient >> >> (this=0x9ad64a0, pdata=0x72611028, >> >> deleteProtoBuf=false) at ./GRPCInterface/WaveGrpcClientInfo.cpp:47 >> >> >> Env Information: >> >> - cpp server >> >> - python client >> >> - grpc library version : 1.1.0-dev >> >> - Asynchrous streaming >> >> >> Code : >> >> template <class T> void WaveGrpcClientInfo<T>::postDataToClient (void >> *pdata, bool deleteProtoBuf) >> { >> //check if client is still alive, if client is disconnected, just >> return. >> if (m_serverContext->IsCancelled ()) >> { >> return; >> } >> >> // post the protobf output to client. >> m_writer->Write (*(static_cast<T*>(pdata)), m_uniqueTag); >> >> if (true == deleteProtoBuf) >> { >> WaveNs::tracePrintf (TRACE_LEVEL_DEVEL, >> "WaveGrpcClientInfo::postDataToClient: Deleting payload."); >> delete ((static_cast<T*>(pdata))); >> } >> >> } >> >> >> ServerAsyncWriter<T>* m_writer; >> >> >> Is this a known issue ? is it fixed in any newer release ? Please help. >> >> >> Thanks >> >> Chaitanya >> >> -- >> 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 post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/grpc-io. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/grpc-io/cfe889a4-6ddb-424f-8f2e-156b770bc7b6%40googlegroups.com >> >> <https://groups.google.com/d/msgid/grpc-io/cfe889a4-6ddb-424f-8f2e-156b770bc7b6%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- 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 post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/81cfef3d-eb99-4c18-a68d-a678aad6fa63%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
