[ https://issues.apache.org/jira/browse/KUDU-2011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17258713#comment-17258713 ]
ASF subversion and git services commented on KUDU-2011: ------------------------------------------------------- Commit 5b2287aa3c1a2858f918aec25054eb9ce523572e in kudu's branch refs/heads/master from Alexey Serbin [ https://gitbox.apache.org/repos/asf?p=kudu.git;h=5b2287a ] [docs] RPC cancellation is now implemented This patch updates the documentation on the RPC design in rpc.md, refreshing the note on the RPC cancellation. Since KUDU-2065 has been addressed, it's now possible to cancel a remote call using the RpcController::Cancel() method (follow up JIRAs KUDU-2334 and KUDU-2011 are still open, but the functionality for RPC cancellation is there). Change-Id: I335b3c0fd965896aff7e1625fd01ae564c050b1a Reviewed-on: http://gerrit.cloudera.org:8080/16918 Tested-by: Kudu Jenkins Reviewed-by: Grant Henke <granthe...@apache.org> > Request-side sidecars cannot be safely destroyed on timeout > ----------------------------------------------------------- > > Key: KUDU-2011 > URL: https://issues.apache.org/jira/browse/KUDU-2011 > Project: Kudu > Issue Type: Bug > Components: rpc > Reporter: Henry Robinson > Assignee: Michael Ho > Priority: Major > > If a timeout occurs while sending a request-side sidecar (see KUDU-1866), the > RPC callback may be invoked before the outbound transfer has been completely > written. > This is the last notification from the RPC layer that the caller will get, so > you might expect them to delete the sidecar payload at that point, but it's > not safe to do so. In fact, with a slow sender there is no way for the caller > to know when it's safe to delete the payload. There's no problem for the > protobuf message data, as it's serialized during the blocking part of an > async call, and that memory is tied to the lifetime of the outbound call, > which is managed by the RPC layer. > Ownership of the sidecar payloads should be shared between caller and the RPC > layer, so really it's the new {{RpcSidecar::FromSlice}} API that causes the > problems because ownership is not shared with the {{RpcSidecar}} which does > have the correct lifetime. I propose removing {{FromSlice}} and having a > {{FromFaststring(shared_ptr<faststring>)}} variant. -- This message was sent by Atlassian Jira (v8.3.4#803005)