payload: {"action":"created","comment":{"url":"https://api.github.com/repos/daos-stack/daos/pulls/comments/330624084","pull_request_review_id":296335948,"id":330624084,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMzMDYyNDA4NA==","diff_hunk":"@@ -94,43 +91,89 @@ func (msc *mgmtSvcClient) LeaderAddress() (string, error) {\n }\n \n func (msc *mgmtSvcClient) Join(ctx context.Context, req *mgmtpb.JoinReq) (resp *mgmtpb.JoinResp, joinErr error) {\n-\tjoinErr = msc.withConnection(ctx, func(ctx context.Context, ap string, pbClient mgmtpb.MgmtSvcClient) error {\n-\t\tprefix := fmt.Sprintf(\"join(%s, %+v)\", ap, *req)\n-\t\tmsc.log.Debugf(prefix + \" begin\")\n-\t\tdefer msc.log.Debugf(prefix + \" end\")\n-\n-\t\tif req.Addr == \"\" {\n-\t\t\treq.Addr = msc.cfg.ControlAddr.String()\n-\t\t}\n-\n-\t\tfor {\n-\t\t\tselect {\n-\t\t\tcase <-ctx.Done():\n-\t\t\t\treturn errors.Wrap(ctx.Err(), prefix)\n-\t\t\tdefault:\n+\tap, err := msc.LeaderAddress()\n+\tif err != nil {\n+\t\treturn nil, err\n+\t}\n+\n+\tjoinErr = msc.withConnection(ctx, ap,\n+\t\tfunc(ctx context.Context, pbClient mgmtpb.MgmtSvcClient) error {\n+\n+\t\t\tprefix := fmt.Sprintf(\"join(%s, %+v)\", ap, *req)\n+\t\t\tmsc.log.Debugf(prefix + \" begin\")\n+\t\t\tdefer msc.log.Debugf(prefix + \" end\")\n+\n+\t\t\tif req.Addr == \"\" {\n+\t\t\t\treq.Addr = msc.cfg.ControlAddr.String()\n \t\t\t}\n \n-\t\t\tresp, err := pbClient.Join(ctx, req)\n-\t\t\tif err != nil {\n-\t\t\t\tmsc.log.Debugf(prefix+\": %v\", err)\n-\t\t\t} else {\n-\t\t\t\t// TODO: Stop retrying upon certain errors (e.g., \"not\n-\t\t\t\t// MS\", \"rank unavailable\", and \"excluded\").\n-\t\t\t\tif resp.Status != 0 {\n-\t\t\t\t\tmsc.log.Debugf(prefix+\": %d\", resp.Status)\n+\t\t\tfor {","path":"src/control/server/mgmt_client.go","position":65,"original_position":65,"commit_id":"731f50b5ba2276c0617abe097de0ee333d69f7d8","original_commit_id":"731f50b5ba2276c0617abe097de0ee333d69f7d8","user":{"login":"tanabarr","id":3277648,"node_id":"MDQ6VXNlcjMyNzc2NDg=","avatar_url":"https://avatars2.githubusercontent.com/u/3277648?v=4","gravatar_id":"","url":"https://api.github.com/users/tanabarr","html_url":"https://github.com/tanabarr","followers_url":"https://api.github.com/users/tanabarr/followers","following_url":"https://api.github.com/users/tanabarr/following{/other_user}","gists_url":"https://api.github.com/users/tanabarr/gists{/gist_id}","starred_url":"https://api.github.com/users/tanabarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanabarr/subscriptions","organizations_url":"https://api.github.com/users/tanabarr/orgs","repos_url":"https://api.github.com/users/tanabarr/repos","events_url":"https://api.github.com/users/tanabarr/events{/privacy}","received_events_url":"https://api.github.com/users/tanabarr/received_events","type":"User","site_admin":false},"body":"agreed","created_at":"2019-10-02T15:39:04Z","updated_at":"2019-10-02T15:39:04Z","html_url":"https://github.com/daos-stack/daos/pull/1182#discussion_r330624084","pull_request_url":"https://api.github.com/repos/daos-stack/daos/pulls/1182","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/comments/330624084"},"html":{"href":"https://github.com/daos-stack/daos/pull/1182#discussion_r330624084"},"pull_request":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/1182"}},"in_reply_to_id":330621655},"pull_request":{"url":"https://api.github.com/repos/daos-stack/daos/pulls/1182","id":323272670,"node_id":"MDExOlB1bGxSZXF1ZXN0MzIzMjcyNjcw","html_url":"https://github.com/daos-stack/daos/pull/1182","diff_url":"https://github.com/daos-stack/daos/pull/1182.diff","patch_url":"https://github.com/daos-stack/daos/pull/1182.patch","issue_url":"https://api.github.com/repos/daos-stack/daos/issues/1182","number":1182,"state":"open","locked":false,"title":"DAOS-3316 control: send grpc stop to system membership","user":{"login":"tanabarr","id":3277648,"node_id":"MDQ6VXNlcjMyNzc2NDg=","avatar_url":"https://avatars2.githubusercontent.com/u/3277648?v=4","gravatar_id":"","url":"https://api.github.com/users/tanabarr","html_url":"https://github.com/tanabarr","followers_url":"https://api.github.com/users/tanabarr/followers","following_url":"https://api.github.com/users/tanabarr/following{/other_user}","gists_url":"https://api.github.com/users/tanabarr/gists{/gist_id}","starred_url":"https://api.github.com/users/tanabarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanabarr/subscriptions","organizations_url":"https://api.github.com/users/tanabarr/orgs","repos_url":"https://api.github.com/users/tanabarr/repos","events_url":"https://api.github.com/users/tanabarr/events{/privacy}","received_events_url":"https://api.github.com/users/tanabarr/received_events","type":"User","site_admin":false},"body":"Send SystemStop requests (currently handler will kill rank over dRPC)\r\nfrom management service leader to entire system membership. Requests\r\nsent by MgmtSvcClient in parallel over gRPC.\r\n\r\nSigned-off-by: Tom Nabarro <tom.nabarro@intel.com>","created_at":"2019-10-01T13:28:49Z","updated_at":"2019-10-02T15:39:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2e93a02bce005b4ef49aa1b01f3155d19ad48a62","assignee":null,"assignees":[],"requested_reviewers":[{"login":"liw","id":356768,"node_id":"MDQ6VXNlcjM1Njc2OA==","avatar_url":"https://avatars2.githubusercontent.com/u/356768?v=4","gravatar_id":"","url":"https://api.github.com/users/liw","html_url":"https://github.com/liw","followers_url":"https://api.github.com/users/liw/followers","following_url":"https://api.github.com/users/liw/following{/other_user}","gists_url":"https://api.github.com/users/liw/gists{/gist_id}","starred_url":"https://api.github.com/users/liw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liw/subscriptions","organizations_url":"https://api.github.com/users/liw/orgs","repos_url":"https://api.github.com/users/liw/repos","events_url":"https://api.github.com/users/liw/events{/privacy}","received_events_url":"https://api.github.com/users/liw/received_events","type":"User","site_admin":false},{"login":"johannlombardi","id":1126906,"node_id":"MDQ6VXNlcjExMjY5MDY=","avatar_url":"https://avatars3.githubusercontent.com/u/1126906?v=4","gravatar_id":"","url":"https://api.github.com/users/johannlombardi","html_url":"https://github.com/johannlombardi","followers_url":"https://api.github.com/users/johannlombardi/followers","following_url":"https://api.github.com/users/johannlombardi/following{/other_user}","gists_url":"https://api.github.com/users/johannlombardi/gists{/gist_id}","starred_url":"https://api.github.com/users/johannlombardi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johannlombardi/subscriptions","organizations_url":"https://api.github.com/users/johannlombardi/orgs","repos_url":"https://api.github.com/users/johannlombardi/repos","events_url":"https://api.github.com/users/johannlombardi/events{/privacy}","received_events_url":"https://api.github.com/users/johannlombardi/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/daos-stack/daos/pulls/1182/commits","review_comments_url":"https://api.github.com/repos/daos-stack/daos/pulls/1182/comments","review_comment_url":"https://api.github.com/repos/daos-stack/daos/pulls/comments{/number}","comments_url":"https://api.github.com/repos/daos-stack/daos/issues/1182/comments","statuses_url":"https://api.github.com/repos/daos-stack/daos/statuses/731f50b5ba2276c0617abe097de0ee333d69f7d8","head":{"label":"daos-stack:tanabarr/control-grpc-multicast-stop","ref":"tanabarr/control-grpc-multicast-stop","sha":"731f50b5ba2276c0617abe097de0ee333d69f7d8","user":{"login":"daos-stack","id":20561043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTYxMDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20561043?v=4","gravatar_id":"","url":"https://api.github.com/users/daos-stack","html_url":"https://github.com/daos-stack","followers_url":"https://api.github.com/users/daos-stack/followers","following_url":"https://api.github.com/users/daos-stack/following{/other_user}","gists_url":"https://api.github.com/users/daos-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/daos-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daos-stack/subscriptions","organizations_url":"https://api.github.com/users/daos-stack/orgs","repos_url":"https://api.github.com/users/daos-stack/repos","events_url":"https://api.github.com/users/daos-stack/events{/privacy}","received_events_url":"https://api.github.com/users/daos-stack/received_events","type":"Organization","site_admin":false},"repo":{"id":69390670,"node_id":"MDEwOlJlcG9zaXRvcnk2OTM5MDY3MA==","name":"daos","full_name":"daos-stack/daos","private":false,"owner":{"login":"daos-stack","id":20561043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTYxMDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20561043?v=4","gravatar_id":"","url":"https://api.github.com/users/daos-stack","html_url":"https://github.com/daos-stack","followers_url":"https://api.github.com/users/daos-stack/followers","following_url":"https://api.github.com/users/daos-stack/following{/other_user}","gists_url":"https://api.github.com/users/daos-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/daos-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daos-stack/subscriptions","organizations_url":"https://api.github.com/users/daos-stack/orgs","repos_url":"https://api.github.com/users/daos-stack/repos","events_url":"https://api.github.com/users/daos-stack/events{/privacy}","received_events_url":"https://api.github.com/users/daos-stack/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/daos-stack/daos","description":"DAOS Storage Engine","fork":false,"url":"https://api.github.com/repos/daos-stack/daos","forks_url":"https://api.github.com/repos/daos-stack/daos/forks","keys_url":"https://api.github.com/repos/daos-stack/daos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/daos-stack/daos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/daos-stack/daos/teams","hooks_url":"https://api.github.com/repos/daos-stack/daos/hooks","issue_events_url":"https://api.github.com/repos/daos-stack/daos/issues/events{/number}","events_url":"https://api.github.com/repos/daos-stack/daos/events","assignees_url":"https://api.github.com/repos/daos-stack/daos/assignees{/user}","branches_url":"https://api.github.com/repos/daos-stack/daos/branches{/branch}","tags_url":"https://api.github.com/repos/daos-stack/daos/tags","blobs_url":"https://api.github.com/repos/daos-stack/daos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/daos-stack/daos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/daos-stack/daos/git/refs{/sha}","trees_url":"https://api.github.com/repos/daos-stack/daos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/daos-stack/daos/statuses/{sha}","languages_url":"https://api.github.com/repos/daos-stack/daos/languages","stargazers_url":"https://api.github.com/repos/daos-stack/daos/stargazers","contributors_url":"https://api.github.com/repos/daos-stack/daos/contributors","subscribers_url":"https://api.github.com/repos/daos-stack/daos/subscribers","subscription_url":"https://api.github.com/repos/daos-stack/daos/subscription","commits_url":"https://api.github.com/repos/daos-stack/daos/commits{/sha}","git_commits_url":"https://api.github.com/repos/daos-stack/daos/git/commits{/sha}","comments_url":"https://api.github.com/repos/daos-stack/daos/comments{/number}","issue_comment_url":"https://api.github.com/repos/daos-stack/daos/issues/comments{/number}","contents_url":"https://api.github.com/repos/daos-stack/daos/contents/{+path}","compare_url":"https://api.github.com/repos/daos-stack/daos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/daos-stack/daos/merges","archive_url":"https://api.github.com/repos/daos-stack/daos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/daos-stack/daos/downloads","issues_url":"https://api.github.com/repos/daos-stack/daos/issues{/number}","pulls_url":"https://api.github.com/repos/daos-stack/daos/pulls{/number}","milestones_url":"https://api.github.com/repos/daos-stack/daos/milestones{/number}","notifications_url":"https://api.github.com/repos/daos-stack/daos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/daos-stack/daos/labels{/name}","releases_url":"https://api.github.com/repos/daos-stack/daos/releases{/id}","deployments_url":"https://api.github.com/repos/daos-stack/daos/deployments","created_at":"2016-09-27T19:21:29Z","updated_at":"2019-10-02T08:31:04Z","pushed_at":"2019-10-02T15:03:03Z","git_url":"git://github.com/daos-stack/daos.git","ssh_url":"git@github.com:daos-stack/daos.git","clone_url":"https://github.com/daos-stack/daos.git","svn_url":"https://github.com/daos-stack/daos","homepage":"http://daos.io","size":26679,"stargazers_count":141,"watchers_count":141,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":47,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":100,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":47,"open_issues":100,"watchers":141,"default_branch":"master"}},"base":{"label":"daos-stack:tanabarr/control-system-stop-cmd","ref":"tanabarr/control-system-stop-cmd","sha":"bfc917874209eba24ced48aa305bfc38d89351d2","user":{"login":"daos-stack","id":20561043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTYxMDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20561043?v=4","gravatar_id":"","url":"https://api.github.com/users/daos-stack","html_url":"https://github.com/daos-stack","followers_url":"https://api.github.com/users/daos-stack/followers","following_url":"https://api.github.com/users/daos-stack/following{/other_user}","gists_url":"https://api.github.com/users/daos-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/daos-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daos-stack/subscriptions","organizations_url":"https://api.github.com/users/daos-stack/orgs","repos_url":"https://api.github.com/users/daos-stack/repos","events_url":"https://api.github.com/users/daos-stack/events{/privacy}","received_events_url":"https://api.github.com/users/daos-stack/received_events","type":"Organization","site_admin":false},"repo":{"id":69390670,"node_id":"MDEwOlJlcG9zaXRvcnk2OTM5MDY3MA==","name":"daos","full_name":"daos-stack/daos","private":false,"owner":{"login":"daos-stack","id":20561043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNTYxMDQz","avatar_url":"https://avatars1.githubusercontent.com/u/20561043?v=4","gravatar_id":"","url":"https://api.github.com/users/daos-stack","html_url":"https://github.com/daos-stack","followers_url":"https://api.github.com/users/daos-stack/followers","following_url":"https://api.github.com/users/daos-stack/following{/other_user}","gists_url":"https://api.github.com/users/daos-stack/gists{/gist_id}","starred_url":"https://api.github.com/users/daos-stack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daos-stack/subscriptions","organizations_url":"https://api.github.com/users/daos-stack/orgs","repos_url":"https://api.github.com/users/daos-stack/repos","events_url":"https://api.github.com/users/daos-stack/events{/privacy}","received_events_url":"https://api.github.com/users/daos-stack/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/daos-stack/daos","description":"DAOS Storage Engine","fork":false,"url":"https://api.github.com/repos/daos-stack/daos","forks_url":"https://api.github.com/repos/daos-stack/daos/forks","keys_url":"https://api.github.com/repos/daos-stack/daos/keys{/key_id}","collaborators_url":"https://api.github.com/repos/daos-stack/daos/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/daos-stack/daos/teams","hooks_url":"https://api.github.com/repos/daos-stack/daos/hooks","issue_events_url":"https://api.github.com/repos/daos-stack/daos/issues/events{/number}","events_url":"https://api.github.com/repos/daos-stack/daos/events","assignees_url":"https://api.github.com/repos/daos-stack/daos/assignees{/user}","branches_url":"https://api.github.com/repos/daos-stack/daos/branches{/branch}","tags_url":"https://api.github.com/repos/daos-stack/daos/tags","blobs_url":"https://api.github.com/repos/daos-stack/daos/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/daos-stack/daos/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/daos-stack/daos/git/refs{/sha}","trees_url":"https://api.github.com/repos/daos-stack/daos/git/trees{/sha}","statuses_url":"https://api.github.com/repos/daos-stack/daos/statuses/{sha}","languages_url":"https://api.github.com/repos/daos-stack/daos/languages","stargazers_url":"https://api.github.com/repos/daos-stack/daos/stargazers","contributors_url":"https://api.github.com/repos/daos-stack/daos/contributors","subscribers_url":"https://api.github.com/repos/daos-stack/daos/subscribers","subscription_url":"https://api.github.com/repos/daos-stack/daos/subscription","commits_url":"https://api.github.com/repos/daos-stack/daos/commits{/sha}","git_commits_url":"https://api.github.com/repos/daos-stack/daos/git/commits{/sha}","comments_url":"https://api.github.com/repos/daos-stack/daos/comments{/number}","issue_comment_url":"https://api.github.com/repos/daos-stack/daos/issues/comments{/number}","contents_url":"https://api.github.com/repos/daos-stack/daos/contents/{+path}","compare_url":"https://api.github.com/repos/daos-stack/daos/compare/{base}...{head}","merges_url":"https://api.github.com/repos/daos-stack/daos/merges","archive_url":"https://api.github.com/repos/daos-stack/daos/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/daos-stack/daos/downloads","issues_url":"https://api.github.com/repos/daos-stack/daos/issues{/number}","pulls_url":"https://api.github.com/repos/daos-stack/daos/pulls{/number}","milestones_url":"https://api.github.com/repos/daos-stack/daos/milestones{/number}","notifications_url":"https://api.github.com/repos/daos-stack/daos/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/daos-stack/daos/labels{/name}","releases_url":"https://api.github.com/repos/daos-stack/daos/releases{/id}","deployments_url":"https://api.github.com/repos/daos-stack/daos/deployments","created_at":"2016-09-27T19:21:29Z","updated_at":"2019-10-02T08:31:04Z","pushed_at":"2019-10-02T15:03:03Z","git_url":"git://github.com/daos-stack/daos.git","ssh_url":"git@github.com:daos-stack/daos.git","clone_url":"https://github.com/daos-stack/daos.git","svn_url":"https://github.com/daos-stack/daos","homepage":"http://daos.io","size":26679,"stargazers_count":141,"watchers_count":141,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":47,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":100,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":47,"open_issues":100,"watchers":141,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/1182"},"html":{"href":"https://github.com/daos-stack/daos/pull/1182"},"issue":{"href":"https://api.github.com/repos/daos-stack/daos/issues/1182"},"comments":{"href":"https://api.github.com/repos/daos-stack/daos/issues/1182/comments"},"review_comments":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/1182/comments"},"review_comment":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/daos-stack/daos/pulls/1182/commits"},"statuses":{"href":"https://api.github.com/repos/daos-stack/daos/statuses/731f50b5ba2276c0617abe097de0ee333d69f7d8"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"tanabarr"}}