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 <[email protected]> Gerrit-Reviewer: Adar Dembo <[email protected]> Gerrit-Reviewer: Alexey Serbin <[email protected]> Gerrit-Reviewer: Andrew Wong <[email protected]> Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Todd Lipcon <[email protected]> Gerrit-Comment-Date: Sat, 12 Jan 2019 07:08:33 +0000 Gerrit-HasComments: Yes
