{"action":"created","issue":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/18832","repository_url":"https://api.github.com/repos/elastic/elasticsearch","labels_url":"https://api.github.com/repos/elastic/elasticsearch/issues/18832/labels{/name}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/18832/comments","events_url":"https://api.github.com/repos/elastic/elasticsearch/issues/18832/events","html_url":"https://github.com/elastic/elasticsearch/pull/18832","id":159851311,"number":18832,"title":"Simplify NodeJoinController to make use of new cluster state batching infra","user":{"login":"bleskes","id":1006375,"avatar_url":"https://avatars.githubusercontent.com/u/1006375?v=3","gravatar_id":"","url":"https://api.github.com/users/bleskes","html_url":"https://github.com/bleskes","followers_url":"https://api.github.com/users/bleskes/followers","following_url":"https://api.github.com/users/bleskes/following{/other_user}","gists_url":"https://api.github.com/users/bleskes/gists{/gist_id}","starred_url":"https://api.github.com/users/bleskes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bleskes/subscriptions","organizations_url":"https://api.github.com/users/bleskes/orgs","repos_url":"https://api.github.com/users/bleskes/repos","events_url":"https://api.github.com/users/bleskes/events{/privacy}","received_events_url":"https://api.github.com/users/bleskes/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Discovery","name":":Discovery","color":"009800"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/non-issue","name":"non-issue","color":"cfcfcf"},{"url":"https://api.github.com/repos/elastic/elasticsearch/labels/v5.0.0","name":"v5.0.0","color":"dddddd"}],"state":"open","locked":false,"assignee":{"login":"jasontedor","id":4744941,"avatar_url":"https://avatars.githubusercontent.com/u/4744941?v=3","gravatar_id":"","url":"https://api.github.com/users/jasontedor","html_url":"https://github.com/jasontedor","followers_url":"https://api.github.com/users/jasontedor/followers","following_url":"https://api.github.com/users/jasontedor/following{/other_user}","gists_url":"https://api.github.com/users/jasontedor/gists{/gist_id}","starred_url":"https://api.github.com/users/jasontedor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasontedor/subscriptions","organizations_url":"https://api.github.com/users/jasontedor/orgs","repos_url":"https://api.github.com/users/jasontedor/repos","events_url":"https://api.github.com/users/jasontedor/events{/privacy}","received_events_url":"https://api.github.com/users/jasontedor/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2016-06-12T22:16:20Z","updated_at":"2016-06-15T04:39:26Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/18832","html_url":"https://github.com/elastic/elasticsearch/pull/18832","diff_url":"https://github.com/elastic/elasticsearch/pull/18832.diff","patch_url":"https://github.com/elastic/elasticsearch/pull/18832.patch"},"body":"The NodeJoinController is responsible for processing joins from nodes, both normally and during master election. For both use cases, the class processes incoming joins in batches in order to be efficient and to accumulated enough joins (i.e., >= min_master_nodes) to seal an election and ensure the new cluster state can be committed. Since the class was written, we introduced a new infrastructure to support batch changes to the cluster state at the `ClusterService` level. This PR rewrites NodeJoinController to use that infra and be simpler.\r\n\r\nThe PR also introduces a new concept to ClusterService allowing to submit tasks in batches, guaranteeing that all tasks submitted in a batch will be processed together (potentially with more tasks).  On top of that I added some extra safety checks to the ClusterService, around potential double submission of task objects into the queue.\r\n\r\nThis is done in preparation to revive #17811"},"comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/issues/comments/226086143","html_url":"https://github.com/elastic/elasticsearch/pull/18832#issuecomment-226086143","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/18832","id":226086143,"user":{"login":"bleskes","id":1006375,"avatar_url":"https://avatars.githubusercontent.com/u/1006375?v=3","gravatar_id":"","url":"https://api.github.com/users/bleskes","html_url":"https://github.com/bleskes","followers_url":"https://api.github.com/users/bleskes/followers","following_url":"https://api.github.com/users/bleskes/following{/other_user}","gists_url":"https://api.github.com/users/bleskes/gists{/gist_id}","starred_url":"https://api.github.com/users/bleskes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bleskes/subscriptions","organizations_url":"https://api.github.com/users/bleskes/orgs","repos_url":"https://api.github.com/users/bleskes/repos","events_url":"https://api.github.com/users/bleskes/events{/privacy}","received_events_url":"https://api.github.com/users/bleskes/received_events","type":"User","site_admin":false},"created_at":"2016-06-15T04:39:26Z","updated_at":"2016-06-15T04:39:26Z","body":"@jasontedor thx for your review. I pushed another commit addressing all your comments (and responded to some)."}}
{"actor":{"display_login":"bleskes"}}