From c33b593c8863ccc496e913bd82744ecc991c89f8 Mon Sep 17 00:00:00 2001 From: Sree Kuchibhotla Date: Thu, 27 Sep 2018 14:23:29 -0700 Subject: Add comments on what 'covering' a write means --- src/core/lib/iomgr/tcp_posix.cc | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/core/lib/iomgr') diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index ac1e919acb..4aad83915f 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -204,6 +204,15 @@ static void drop_uncovered(grpc_tcp* tcp) { GPR_ASSERT(old_count != 1); } +/* gRPC API considers a Write operation to be done the moment it clears ‘flow + control’ i.e., and not necessarily sent on the wire. This means that the + application MAY NOT call `grpc_completion_queue_next/pluck` in a timely + manner when its `Write()` API is acked. + + We need to ensure that the fd is 'covered' (i.e being monitored by some + polling thread and progress is made) and hence add it to a backup poller + here */ + static void cover_self(grpc_tcp* tcp) { backup_poller* p; gpr_atm old_count = -- cgit v1.2.3