Andrew Wong has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12170 )

Change subject: client: avoid accessing state after scheduling retry
......................................................................


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/12170/4/src/kudu/client/master_proxy_rpc.cc
File src/kudu/client/master_proxy_rpc.cc:

http://gerrit.cloudera.org:8080/#/c/12170/4/src/kudu/client/master_proxy_rpc.cc@188
PS4, Line 188: we pass in a copy of the string
> I'm not sure I understand: if that's about the 'retry_warning' string, then
Any of the retry attempts below (e.g. L210, L218, L220, etc.) may end up 
finishing before this function exits, and if any such retry is successful, it 
will call `user_cb_`. Usually this `user_cb_` is a `Synchronizer.Wait()`, and 
in most cases what follows is the destruction of the Rpc object. Meanwhile, 
this log message gets evaluated and may try to access rpc_name_ and client_ and 
crash.

As an extreme example, you can imagine putting a sleep at L221 to arrive at the 
race described in the commit message.



--
To view, visit http://gerrit.cloudera.org:8080/12170
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I8cefd9613018247a1a25d17adedc021e8be166f6
Gerrit-Change-Number: 12170
Gerrit-PatchSet: 4
Gerrit-Owner: Andrew Wong <aw...@cloudera.com>
Gerrit-Reviewer: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <aser...@cloudera.com>
Gerrit-Reviewer: Andrew Wong <aw...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Todd Lipcon <t...@apache.org>
Gerrit-Comment-Date: Sat, 12 Jan 2019 07:08:33 +0000
Gerrit-HasComments: Yes

Reply via email to