Sailesh Mukil has uploaded a new patch set (#2).

Change subject: IMPALA-3977: TransmitData() should not block
......................................................................

IMPALA-3977: TransmitData() should not block

TransmitData() calls effectively block until an error occurs (e.g.
datastream_sender_timeout_ms expires) or the RPC is serviced by the
receiver. This is bad for a variety of reasons, not least that it
makes it impossible to cancel the sender without also cancelling the
recipient (who might not even be running!).

With our current RPC stack, this holds up the connection for as long
as the receiver takes to get ready (or until it times out), which
means that that connection is unusable by other threads.

When we move to KuduRPC, we will have a different problem if this RPC
remains blocking, in that it will hold up a service thread on the
receiver side potentially blocking progress for other tasks on that
host that require a service thread.

This patch introduces a EAGAIN like error code that the receiver sends
back to the sender if the DataStreamReceiver object is not yet ready
to receive data. The sender tries again up to 5 times with intervals
in between.

Change-Id: I47f9d6c1de95a72ab73471dcd2a3118ef13e7db0
---
M be/src/runtime/data-stream-mgr.cc
M be/src/runtime/data-stream-mgr.h
M be/src/runtime/data-stream-sender.cc
M common/thrift/generate_error_codes.py
4 files changed, 85 insertions(+), 139 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/91/5491/2
-- 
To view, visit http://gerrit.cloudera.org:8080/5491
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I47f9d6c1de95a72ab73471dcd2a3118ef13e7db0
Gerrit-PatchSet: 2
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Sailesh Mukil <sail...@cloudera.com>
Gerrit-Reviewer: Henry Robinson <he...@cloudera.com>
Gerrit-Reviewer: Lars Volker <l...@cloudera.com>
Gerrit-Reviewer: Sailesh Mukil <sail...@cloudera.com>

Reply via email to