{"action":"created","issue":{"url":"https://api.github.com/repos/m3db/m3db/issues/678","repository_url":"https://api.github.com/repos/m3db/m3db","labels_url":"https://api.github.com/repos/m3db/m3db/issues/678/labels{/name}","comments_url":"https://api.github.com/repos/m3db/m3db/issues/678/comments","events_url":"https://api.github.com/repos/m3db/m3db/issues/678/events","html_url":"https://github.com/m3db/m3db/pull/678","id":324779343,"number":678,"title":"[WIP] Allow seed nodes to bootstrap placement","user":{"login":"schallert","id":434973,"avatar_url":"https://avatars1.githubusercontent.com/u/434973?v=4","gravatar_id":"","url":"https://api.github.com/users/schallert","html_url":"https://github.com/schallert","followers_url":"https://api.github.com/users/schallert/followers","following_url":"https://api.github.com/users/schallert/following{/other_user}","gists_url":"https://api.github.com/users/schallert/gists{/gist_id}","starred_url":"https://api.github.com/users/schallert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/schallert/subscriptions","organizations_url":"https://api.github.com/users/schallert/orgs","repos_url":"https://api.github.com/users/schallert/repos","events_url":"https://api.github.com/users/schallert/events{/privacy}","received_events_url":"https://api.github.com/users/schallert/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-05-21T03:51:08Z","updated_at":"2018-05-21T19:40:39Z","closed_at":"2018-05-21T19:40:39Z","author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/m3db/m3db/pulls/678","html_url":"https://github.com/m3db/m3db/pull/678","diff_url":"https://github.com/m3db/m3db/pull/678.diff","patch_url":"https://github.com/m3db/m3db/pull/678.patch"},"body":"We currently have a circular dependency issue when bootstrapping a new\r\nseed-noded cluster. The seed nodes themselves will die if they don't get\r\na placement update within 30 seconds. Getting that placement update\r\nrequires an initial placement being built, which requires the\r\ncoordinator being up. The coordinator being up requires that a db client\r\nhas been made.\r\n\r\nYes, we could break this cycle in other ways. We could remove the hard\r\ndependency on the coordinator, increase the placement timeout, etc.\r\nThere will presumably still be some manual effort required by the\r\noperator to inform the coordinator of the initial placement.\r\n\r\nThis PR is a proof of concept for a way to break this dependency cycle\r\nsomewhat differently: by allowing the seed nodes to bootstrap their own\r\nplacement. If so configured, the seed nodes will race to create a\r\nplacement containing themselves, and the db node will continue to be\r\nable to boot.\r\n\r\nI've tested this as a proof of concept on bare metal and an orchestrator\r\nand this seems to be a feasible holdover. However either way it's a\r\nstop-gap solution until we figure out a more robust bootstrap story.\r\n\r\n**PR IS WIP**. If we think this is an okay temporary approach I'll clean\r\nit up, fix some bugs, and add some tests."},"comment":{"url":"https://api.github.com/repos/m3db/m3db/issues/comments/390760080","html_url":"https://github.com/m3db/m3db/pull/678#issuecomment-390760080","issue_url":"https://api.github.com/repos/m3db/m3db/issues/678","id":390760080,"user":{"login":"schallert","id":434973,"avatar_url":"https://avatars1.githubusercontent.com/u/434973?v=4","gravatar_id":"","url":"https://api.github.com/users/schallert","html_url":"https://github.com/schallert","followers_url":"https://api.github.com/users/schallert/followers","following_url":"https://api.github.com/users/schallert/following{/other_user}","gists_url":"https://api.github.com/users/schallert/gists{/gist_id}","starred_url":"https://api.github.com/users/schallert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/schallert/subscriptions","organizations_url":"https://api.github.com/users/schallert/orgs","repos_url":"https://api.github.com/users/schallert/repos","events_url":"https://api.github.com/users/schallert/events{/privacy}","received_events_url":"https://api.github.com/users/schallert/received_events","type":"User","site_admin":false},"created_at":"2018-05-21T19:40:39Z","updated_at":"2018-05-21T19:40:39Z","author_association":"NONE","body":"We'll be going with a more long-term approach in other PRs"}}
{"actor":{"display_login":"schallert"}}