payload: {"action":"closed","number":4688,"pull_request":{"url":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688","id":326085300,"node_id":"MDExOlB1bGxSZXF1ZXN0MzI2MDg1MzAw","html_url":"https://github.com/apache/incubator-pinot/pull/4688","diff_url":"https://github.com/apache/incubator-pinot/pull/4688.diff","patch_url":"https://github.com/apache/incubator-pinot/pull/4688.patch","issue_url":"https://api.github.com/repos/apache/incubator-pinot/issues/4688","number":4688,"state":"closed","locked":false,"title":"Modify the logic of getting tenant names APIs","user":{"login":"jackjlli","id":35080149,"node_id":"MDQ6VXNlcjM1MDgwMTQ5","avatar_url":"https://avatars1.githubusercontent.com/u/35080149?v=4","gravatar_id":"","url":"https://api.github.com/users/jackjlli","html_url":"https://github.com/jackjlli","followers_url":"https://api.github.com/users/jackjlli/followers","following_url":"https://api.github.com/users/jackjlli/following{/other_user}","gists_url":"https://api.github.com/users/jackjlli/gists{/gist_id}","starred_url":"https://api.github.com/users/jackjlli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackjlli/subscriptions","organizations_url":"https://api.github.com/users/jackjlli/orgs","repos_url":"https://api.github.com/users/jackjlli/repos","events_url":"https://api.github.com/users/jackjlli/events{/privacy}","received_events_url":"https://api.github.com/users/jackjlli/received_events","type":"User","site_admin":false},"body":"This PR modifies the logic of getting tenant name APIs.\r\n\r\nThe previous code firstly gets the list of instance names from `/INSTANCES` ZNode and then gets the instance config one by one from `/CONFIG/PARTICIPANT/INSTANCES` ZNode. Whereas these two ZNodes may be inconsistent. \r\nThat's why we sometimes encounter flaky NPE when calling these APIs.\r\n\r\nSample exception:\r\n```\r\njava.lang.NullPointerException\r\n\tat org.apache.pinot.controller.helix.core.PinotHelixResourceManager.getAllBrokerTenantNames(PinotHelixResourceManager.java:808)\r\n\tat org.apache.pinot.controller.helix.core.PinotHelixResourceManagerTest.testRetrieveTenantNames(PinotHelixResourceManagerTest.java:278)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)\r\n\tat org.testng.internal.Invoker.invokeMethod(Invoker.java:661)\r\n\tat org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)\r\n\tat org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)\r\n\tat org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)\r\n\tat org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)\r\n\tat org.testng.TestRunner.privateRun(TestRunner.java:744)\r\n\tat org.testng.TestRunner.run(TestRunner.java:602)\r\n\tat org.testng.SuiteRunner.runTest(SuiteRunner.java:380)\r\n\tat org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)\r\n\tat org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)\r\n\tat org.testng.SuiteRunner.run(SuiteRunner.java:289)\r\n\tat org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)\r\n\tat org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)\r\n\tat org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)\r\n\tat org.testng.TestNG.runSuitesLocally(TestNG.java:1226)\r\n\tat org.testng.TestNG.runSuites(TestNG.java:1144)\r\n\tat org.testng.TestNG.run(TestNG.java:1115)\r\n\tat org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)\r\n\tat org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)\r\n```","created_at":"2019-10-09T06:11:28Z","updated_at":"2019-10-09T16:45:59Z","closed_at":"2019-10-09T16:45:59Z","merged_at":"2019-10-09T16:45:58Z","merge_commit_sha":"51c7a0f6b87f78d73a146607e5e8f4cdb8a6edd9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688/commits","review_comments_url":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688/comments","review_comment_url":"https://api.github.com/repos/apache/incubator-pinot/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/incubator-pinot/issues/4688/comments","statuses_url":"https://api.github.com/repos/apache/incubator-pinot/statuses/3d5d98a1c37ad417f6b22494b5bdf3344bef9950","head":{"label":"jackjlli:fix-get-all-broker-instances-api","ref":"fix-get-all-broker-instances-api","sha":"3d5d98a1c37ad417f6b22494b5bdf3344bef9950","user":{"login":"jackjlli","id":35080149,"node_id":"MDQ6VXNlcjM1MDgwMTQ5","avatar_url":"https://avatars1.githubusercontent.com/u/35080149?v=4","gravatar_id":"","url":"https://api.github.com/users/jackjlli","html_url":"https://github.com/jackjlli","followers_url":"https://api.github.com/users/jackjlli/followers","following_url":"https://api.github.com/users/jackjlli/following{/other_user}","gists_url":"https://api.github.com/users/jackjlli/gists{/gist_id}","starred_url":"https://api.github.com/users/jackjlli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackjlli/subscriptions","organizations_url":"https://api.github.com/users/jackjlli/orgs","repos_url":"https://api.github.com/users/jackjlli/repos","events_url":"https://api.github.com/users/jackjlli/events{/privacy}","received_events_url":"https://api.github.com/users/jackjlli/received_events","type":"User","site_admin":false},"repo":{"id":175674543,"node_id":"MDEwOlJlcG9zaXRvcnkxNzU2NzQ1NDM=","name":"incubator-pinot","full_name":"jackjlli/incubator-pinot","private":false,"owner":{"login":"jackjlli","id":35080149,"node_id":"MDQ6VXNlcjM1MDgwMTQ5","avatar_url":"https://avatars1.githubusercontent.com/u/35080149?v=4","gravatar_id":"","url":"https://api.github.com/users/jackjlli","html_url":"https://github.com/jackjlli","followers_url":"https://api.github.com/users/jackjlli/followers","following_url":"https://api.github.com/users/jackjlli/following{/other_user}","gists_url":"https://api.github.com/users/jackjlli/gists{/gist_id}","starred_url":"https://api.github.com/users/jackjlli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackjlli/subscriptions","organizations_url":"https://api.github.com/users/jackjlli/orgs","repos_url":"https://api.github.com/users/jackjlli/repos","events_url":"https://api.github.com/users/jackjlli/events{/privacy}","received_events_url":"https://api.github.com/users/jackjlli/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jackjlli/incubator-pinot","description":"Apache Pinot (Incubating) - A realtime distributed OLAP datastore","fork":true,"url":"https://api.github.com/repos/jackjlli/incubator-pinot","forks_url":"https://api.github.com/repos/jackjlli/incubator-pinot/forks","keys_url":"https://api.github.com/repos/jackjlli/incubator-pinot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jackjlli/incubator-pinot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jackjlli/incubator-pinot/teams","hooks_url":"https://api.github.com/repos/jackjlli/incubator-pinot/hooks","issue_events_url":"https://api.github.com/repos/jackjlli/incubator-pinot/issues/events{/number}","events_url":"https://api.github.com/repos/jackjlli/incubator-pinot/events","assignees_url":"https://api.github.com/repos/jackjlli/incubator-pinot/assignees{/user}","branches_url":"https://api.github.com/repos/jackjlli/incubator-pinot/branches{/branch}","tags_url":"https://api.github.com/repos/jackjlli/incubator-pinot/tags","blobs_url":"https://api.github.com/repos/jackjlli/incubator-pinot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jackjlli/incubator-pinot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jackjlli/incubator-pinot/git/refs{/sha}","trees_url":"https://api.github.com/repos/jackjlli/incubator-pinot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jackjlli/incubator-pinot/statuses/{sha}","languages_url":"https://api.github.com/repos/jackjlli/incubator-pinot/languages","stargazers_url":"https://api.github.com/repos/jackjlli/incubator-pinot/stargazers","contributors_url":"https://api.github.com/repos/jackjlli/incubator-pinot/contributors","subscribers_url":"https://api.github.com/repos/jackjlli/incubator-pinot/subscribers","subscription_url":"https://api.github.com/repos/jackjlli/incubator-pinot/subscription","commits_url":"https://api.github.com/repos/jackjlli/incubator-pinot/commits{/sha}","git_commits_url":"https://api.github.com/repos/jackjlli/incubator-pinot/git/commits{/sha}","comments_url":"https://api.github.com/repos/jackjlli/incubator-pinot/comments{/number}","issue_comment_url":"https://api.github.com/repos/jackjlli/incubator-pinot/issues/comments{/number}","contents_url":"https://api.github.com/repos/jackjlli/incubator-pinot/contents/{+path}","compare_url":"https://api.github.com/repos/jackjlli/incubator-pinot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jackjlli/incubator-pinot/merges","archive_url":"https://api.github.com/repos/jackjlli/incubator-pinot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jackjlli/incubator-pinot/downloads","issues_url":"https://api.github.com/repos/jackjlli/incubator-pinot/issues{/number}","pulls_url":"https://api.github.com/repos/jackjlli/incubator-pinot/pulls{/number}","milestones_url":"https://api.github.com/repos/jackjlli/incubator-pinot/milestones{/number}","notifications_url":"https://api.github.com/repos/jackjlli/incubator-pinot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jackjlli/incubator-pinot/labels{/name}","releases_url":"https://api.github.com/repos/jackjlli/incubator-pinot/releases{/id}","deployments_url":"https://api.github.com/repos/jackjlli/incubator-pinot/deployments","created_at":"2019-03-14T18:05:12Z","updated_at":"2019-10-09T05:59:15Z","pushed_at":"2019-10-09T06:06:27Z","git_url":"git://github.com/jackjlli/incubator-pinot.git","ssh_url":"git@github.com:jackjlli/incubator-pinot.git","clone_url":"https://github.com/jackjlli/incubator-pinot.git","svn_url":"https://github.com/jackjlli/incubator-pinot","homepage":"https://pinot.apache.org","size":177718,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"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":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apache:master","ref":"master","sha":"ce298bae09b316b40fa1af65ce96af2bdfcbc286","user":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":19961085,"node_id":"MDEwOlJlcG9zaXRvcnkxOTk2MTA4NQ==","name":"incubator-pinot","full_name":"apache/incubator-pinot","private":false,"owner":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/apache/incubator-pinot","description":"Apache Pinot (Incubating) - A realtime distributed OLAP datastore","fork":false,"url":"https://api.github.com/repos/apache/incubator-pinot","forks_url":"https://api.github.com/repos/apache/incubator-pinot/forks","keys_url":"https://api.github.com/repos/apache/incubator-pinot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/incubator-pinot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/incubator-pinot/teams","hooks_url":"https://api.github.com/repos/apache/incubator-pinot/hooks","issue_events_url":"https://api.github.com/repos/apache/incubator-pinot/issues/events{/number}","events_url":"https://api.github.com/repos/apache/incubator-pinot/events","assignees_url":"https://api.github.com/repos/apache/incubator-pinot/assignees{/user}","branches_url":"https://api.github.com/repos/apache/incubator-pinot/branches{/branch}","tags_url":"https://api.github.com/repos/apache/incubator-pinot/tags","blobs_url":"https://api.github.com/repos/apache/incubator-pinot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/incubator-pinot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/incubator-pinot/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/incubator-pinot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/incubator-pinot/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/incubator-pinot/languages","stargazers_url":"https://api.github.com/repos/apache/incubator-pinot/stargazers","contributors_url":"https://api.github.com/repos/apache/incubator-pinot/contributors","subscribers_url":"https://api.github.com/repos/apache/incubator-pinot/subscribers","subscription_url":"https://api.github.com/repos/apache/incubator-pinot/subscription","commits_url":"https://api.github.com/repos/apache/incubator-pinot/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/incubator-pinot/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/incubator-pinot/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/incubator-pinot/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/incubator-pinot/contents/{+path}","compare_url":"https://api.github.com/repos/apache/incubator-pinot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/incubator-pinot/merges","archive_url":"https://api.github.com/repos/apache/incubator-pinot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/incubator-pinot/downloads","issues_url":"https://api.github.com/repos/apache/incubator-pinot/issues{/number}","pulls_url":"https://api.github.com/repos/apache/incubator-pinot/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/incubator-pinot/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/incubator-pinot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/incubator-pinot/labels{/name}","releases_url":"https://api.github.com/repos/apache/incubator-pinot/releases{/id}","deployments_url":"https://api.github.com/repos/apache/incubator-pinot/deployments","created_at":"2014-05-19T23:27:48Z","updated_at":"2019-10-09T09:53:10Z","pushed_at":"2019-10-09T16:45:58Z","git_url":"git://github.com/apache/incubator-pinot.git","ssh_url":"git@github.com:apache/incubator-pinot.git","clone_url":"https://github.com/apache/incubator-pinot.git","svn_url":"https://github.com/apache/incubator-pinot","homepage":"https://pinot.apache.org","size":177652,"stargazers_count":2365,"watchers_count":2365,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":453,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":320,"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":453,"open_issues":320,"watchers":2365,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688"},"html":{"href":"https://github.com/apache/incubator-pinot/pull/4688"},"issue":{"href":"https://api.github.com/repos/apache/incubator-pinot/issues/4688"},"comments":{"href":"https://api.github.com/repos/apache/incubator-pinot/issues/4688/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/incubator-pinot/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/incubator-pinot/pulls/4688/commits"},"statuses":{"href":"https://api.github.com/repos/apache/incubator-pinot/statuses/3d5d98a1c37ad417f6b22494b5bdf3344bef9950"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"jackjlli","id":35080149,"node_id":"MDQ6VXNlcjM1MDgwMTQ5","avatar_url":"https://avatars1.githubusercontent.com/u/35080149?v=4","gravatar_id":"","url":"https://api.github.com/users/jackjlli","html_url":"https://github.com/jackjlli","followers_url":"https://api.github.com/users/jackjlli/followers","following_url":"https://api.github.com/users/jackjlli/following{/other_user}","gists_url":"https://api.github.com/users/jackjlli/gists{/gist_id}","starred_url":"https://api.github.com/users/jackjlli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jackjlli/subscriptions","organizations_url":"https://api.github.com/users/jackjlli/orgs","repos_url":"https://api.github.com/users/jackjlli/repos","events_url":"https://api.github.com/users/jackjlli/events{/privacy}","received_events_url":"https://api.github.com/users/jackjlli/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":6,"deletions":9,"changed_files":1}}
other: {"actor":{"display_login":"jackjlli"}}