{"action":"created","comment":{"url":"https://api.github.com/repos/twosigma/waiter/pulls/comments/213110989","pull_request_review_id":149878452,"id":213110989,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzExMDk4OQ==","diff_hunk":"@@ -86,12 +85,6 @@\n \n (defprotocol ServiceScheduler\n \n-  (get-service->instances [this]","path":"waiter/src/waiter/scheduler.clj","position":14,"original_position":14,"commit_id":"ea08d9198dda062b8a12d5f7a444948d4b83da61","original_commit_id":"ea08d9198dda062b8a12d5f7a444948d4b83da61","user":{"login":"shamsimam","id":6611249,"node_id":"MDQ6VXNlcjY2MTEyNDk=","avatar_url":"https://avatars0.githubusercontent.com/u/6611249?v=4","gravatar_id":"","url":"https://api.github.com/users/shamsimam","html_url":"https://github.com/shamsimam","followers_url":"https://api.github.com/users/shamsimam/followers","following_url":"https://api.github.com/users/shamsimam/following{/other_user}","gists_url":"https://api.github.com/users/shamsimam/gists{/gist_id}","starred_url":"https://api.github.com/users/shamsimam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamsimam/subscriptions","organizations_url":"https://api.github.com/users/shamsimam/orgs","repos_url":"https://api.github.com/users/shamsimam/repos","events_url":"https://api.github.com/users/shamsimam/events{/privacy}","received_events_url":"https://api.github.com/users/shamsimam/received_events","type":"User","site_admin":false},"body":"This method no longer needs to be part of the scheduler interface. Instead, it moves to a separate interface which allows the scheduler to express interest in being used as a 'pollable' scheduler.","created_at":"2018-08-27T20:50:48Z","updated_at":"2018-08-27T20:53:22Z","html_url":"https://github.com/twosigma/waiter/pull/426#discussion_r213110989","pull_request_url":"https://api.github.com/repos/twosigma/waiter/pulls/426","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/comments/213110989"},"html":{"href":"https://github.com/twosigma/waiter/pull/426#discussion_r213110989"},"pull_request":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/426"}}},"pull_request":{"url":"https://api.github.com/repos/twosigma/waiter/pulls/426","id":210937355,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEwOTM3MzU1","html_url":"https://github.com/twosigma/waiter/pull/426","diff_url":"https://github.com/twosigma/waiter/pull/426.diff","patch_url":"https://github.com/twosigma/waiter/pull/426.patch","issue_url":"https://api.github.com/repos/twosigma/waiter/issues/426","number":426,"state":"open","locked":false,"title":"Makes launching the syncer the responsibility of the scheduler","user":{"login":"shamsimam","id":6611249,"node_id":"MDQ6VXNlcjY2MTEyNDk=","avatar_url":"https://avatars0.githubusercontent.com/u/6611249?v=4","gravatar_id":"","url":"https://api.github.com/users/shamsimam","html_url":"https://github.com/shamsimam","followers_url":"https://api.github.com/users/shamsimam/followers","following_url":"https://api.github.com/users/shamsimam/following{/other_user}","gists_url":"https://api.github.com/users/shamsimam/gists{/gist_id}","starred_url":"https://api.github.com/users/shamsimam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamsimam/subscriptions","organizations_url":"https://api.github.com/users/shamsimam/orgs","repos_url":"https://api.github.com/users/shamsimam/repos","events_url":"https://api.github.com/users/shamsimam/events{/privacy}","received_events_url":"https://api.github.com/users/shamsimam/received_events","type":"User","site_admin":false},"body":"## Changes proposed in this PR\r\n\r\n- uses previously define `state.scheduler-state-chan` from the plumbing core graph in scheduler syncer and router state maintainer\r\n- removes `scheduler-state-mult-chan` in scheduler syncer\r\n- introduces `syncer-state-atom` to store scheduler syncer state\r\n- retrieves service scheduler state from `syncer-state-atom`\r\n- introduces the `PollableServiceScheduler` protocol to allow scheduler to do polling scheduler syncer\r\n- creates `start-scheduler-syncer-fn` to allow each scheduler to manage its own scheduler syncer\r\n\r\n## Why are we making these changes?\r\n\r\nWe would like to be able for schedulers to choose whether they send updates via polling or via event-based push notifications from the underlying scheduler. This changes created a separate protocol (`PollableServiceScheduler`) to allow scheduler implementations to choose the behavior they like and explicitly start the syncer process. In the current implementation, the syncer state is sent back to the scheduler via state updates stored in an atom.\r\n\r\nFuture scheduler implementation can choose to implement other strategies to notify of scheduler state by writing to the provided `scheduler-state-chan`.\r\n","created_at":"2018-08-26T06:49:10Z","updated_at":"2018-08-27T20:53:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9c8eb93432ede2b49ac631d71ae3ec7159618ef7","assignee":{"login":"shamsimam","id":6611249,"node_id":"MDQ6VXNlcjY2MTEyNDk=","avatar_url":"https://avatars0.githubusercontent.com/u/6611249?v=4","gravatar_id":"","url":"https://api.github.com/users/shamsimam","html_url":"https://github.com/shamsimam","followers_url":"https://api.github.com/users/shamsimam/followers","following_url":"https://api.github.com/users/shamsimam/following{/other_user}","gists_url":"https://api.github.com/users/shamsimam/gists{/gist_id}","starred_url":"https://api.github.com/users/shamsimam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamsimam/subscriptions","organizations_url":"https://api.github.com/users/shamsimam/orgs","repos_url":"https://api.github.com/users/shamsimam/repos","events_url":"https://api.github.com/users/shamsimam/events{/privacy}","received_events_url":"https://api.github.com/users/shamsimam/received_events","type":"User","site_admin":false},"assignees":[{"login":"shamsimam","id":6611249,"node_id":"MDQ6VXNlcjY2MTEyNDk=","avatar_url":"https://avatars0.githubusercontent.com/u/6611249?v=4","gravatar_id":"","url":"https://api.github.com/users/shamsimam","html_url":"https://github.com/shamsimam","followers_url":"https://api.github.com/users/shamsimam/followers","following_url":"https://api.github.com/users/shamsimam/following{/other_user}","gists_url":"https://api.github.com/users/shamsimam/gists{/gist_id}","starred_url":"https://api.github.com/users/shamsimam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shamsimam/subscriptions","organizations_url":"https://api.github.com/users/shamsimam/orgs","repos_url":"https://api.github.com/users/shamsimam/repos","events_url":"https://api.github.com/users/shamsimam/events{/privacy}","received_events_url":"https://api.github.com/users/shamsimam/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/twosigma/waiter/pulls/426/commits","review_comments_url":"https://api.github.com/repos/twosigma/waiter/pulls/426/comments","review_comment_url":"https://api.github.com/repos/twosigma/waiter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/twosigma/waiter/issues/426/comments","statuses_url":"https://api.github.com/repos/twosigma/waiter/statuses/ea08d9198dda062b8a12d5f7a444948d4b83da61","head":{"label":"twosigma:scheduler-syncer-refactor","ref":"scheduler-syncer-refactor","sha":"ea08d9198dda062b8a12d5f7a444948d4b83da61","user":{"login":"twosigma","id":4049181,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwNDkxODE=","avatar_url":"https://avatars3.githubusercontent.com/u/4049181?v=4","gravatar_id":"","url":"https://api.github.com/users/twosigma","html_url":"https://github.com/twosigma","followers_url":"https://api.github.com/users/twosigma/followers","following_url":"https://api.github.com/users/twosigma/following{/other_user}","gists_url":"https://api.github.com/users/twosigma/gists{/gist_id}","starred_url":"https://api.github.com/users/twosigma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twosigma/subscriptions","organizations_url":"https://api.github.com/users/twosigma/orgs","repos_url":"https://api.github.com/users/twosigma/repos","events_url":"https://api.github.com/users/twosigma/events{/privacy}","received_events_url":"https://api.github.com/users/twosigma/received_events","type":"Organization","site_admin":false},"repo":{"id":81378873,"node_id":"MDEwOlJlcG9zaXRvcnk4MTM3ODg3Mw==","name":"waiter","full_name":"twosigma/waiter","owner":{"login":"twosigma","id":4049181,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwNDkxODE=","avatar_url":"https://avatars3.githubusercontent.com/u/4049181?v=4","gravatar_id":"","url":"https://api.github.com/users/twosigma","html_url":"https://github.com/twosigma","followers_url":"https://api.github.com/users/twosigma/followers","following_url":"https://api.github.com/users/twosigma/following{/other_user}","gists_url":"https://api.github.com/users/twosigma/gists{/gist_id}","starred_url":"https://api.github.com/users/twosigma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twosigma/subscriptions","organizations_url":"https://api.github.com/users/twosigma/orgs","repos_url":"https://api.github.com/users/twosigma/repos","events_url":"https://api.github.com/users/twosigma/events{/privacy}","received_events_url":"https://api.github.com/users/twosigma/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/twosigma/waiter","description":"Runs, manages, and autoscales web services on Mesos and Kubernetes","fork":false,"url":"https://api.github.com/repos/twosigma/waiter","forks_url":"https://api.github.com/repos/twosigma/waiter/forks","keys_url":"https://api.github.com/repos/twosigma/waiter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/twosigma/waiter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/twosigma/waiter/teams","hooks_url":"https://api.github.com/repos/twosigma/waiter/hooks","issue_events_url":"https://api.github.com/repos/twosigma/waiter/issues/events{/number}","events_url":"https://api.github.com/repos/twosigma/waiter/events","assignees_url":"https://api.github.com/repos/twosigma/waiter/assignees{/user}","branches_url":"https://api.github.com/repos/twosigma/waiter/branches{/branch}","tags_url":"https://api.github.com/repos/twosigma/waiter/tags","blobs_url":"https://api.github.com/repos/twosigma/waiter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/twosigma/waiter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/twosigma/waiter/git/refs{/sha}","trees_url":"https://api.github.com/repos/twosigma/waiter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/twosigma/waiter/statuses/{sha}","languages_url":"https://api.github.com/repos/twosigma/waiter/languages","stargazers_url":"https://api.github.com/repos/twosigma/waiter/stargazers","contributors_url":"https://api.github.com/repos/twosigma/waiter/contributors","subscribers_url":"https://api.github.com/repos/twosigma/waiter/subscribers","subscription_url":"https://api.github.com/repos/twosigma/waiter/subscription","commits_url":"https://api.github.com/repos/twosigma/waiter/commits{/sha}","git_commits_url":"https://api.github.com/repos/twosigma/waiter/git/commits{/sha}","comments_url":"https://api.github.com/repos/twosigma/waiter/comments{/number}","issue_comment_url":"https://api.github.com/repos/twosigma/waiter/issues/comments{/number}","contents_url":"https://api.github.com/repos/twosigma/waiter/contents/{+path}","compare_url":"https://api.github.com/repos/twosigma/waiter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/twosigma/waiter/merges","archive_url":"https://api.github.com/repos/twosigma/waiter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/twosigma/waiter/downloads","issues_url":"https://api.github.com/repos/twosigma/waiter/issues{/number}","pulls_url":"https://api.github.com/repos/twosigma/waiter/pulls{/number}","milestones_url":"https://api.github.com/repos/twosigma/waiter/milestones{/number}","notifications_url":"https://api.github.com/repos/twosigma/waiter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/twosigma/waiter/labels{/name}","releases_url":"https://api.github.com/repos/twosigma/waiter/releases{/id}","deployments_url":"https://api.github.com/repos/twosigma/waiter/deployments","created_at":"2017-02-08T21:40:37Z","updated_at":"2018-08-27T15:10:49Z","pushed_at":"2018-08-27T20:47:10Z","git_url":"git://github.com/twosigma/waiter.git","ssh_url":"git@github.com:twosigma/waiter.git","clone_url":"https://github.com/twosigma/waiter.git","svn_url":"https://github.com/twosigma/waiter","homepage":"","size":3139,"stargazers_count":34,"watchers_count":34,"language":"Clojure","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":33,"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":8,"open_issues":33,"watchers":34,"default_branch":"master"}},"base":{"label":"twosigma:master","ref":"master","sha":"cafad698263bed9f185531a60d11b3f403e60a3a","user":{"login":"twosigma","id":4049181,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwNDkxODE=","avatar_url":"https://avatars3.githubusercontent.com/u/4049181?v=4","gravatar_id":"","url":"https://api.github.com/users/twosigma","html_url":"https://github.com/twosigma","followers_url":"https://api.github.com/users/twosigma/followers","following_url":"https://api.github.com/users/twosigma/following{/other_user}","gists_url":"https://api.github.com/users/twosigma/gists{/gist_id}","starred_url":"https://api.github.com/users/twosigma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twosigma/subscriptions","organizations_url":"https://api.github.com/users/twosigma/orgs","repos_url":"https://api.github.com/users/twosigma/repos","events_url":"https://api.github.com/users/twosigma/events{/privacy}","received_events_url":"https://api.github.com/users/twosigma/received_events","type":"Organization","site_admin":false},"repo":{"id":81378873,"node_id":"MDEwOlJlcG9zaXRvcnk4MTM3ODg3Mw==","name":"waiter","full_name":"twosigma/waiter","owner":{"login":"twosigma","id":4049181,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQwNDkxODE=","avatar_url":"https://avatars3.githubusercontent.com/u/4049181?v=4","gravatar_id":"","url":"https://api.github.com/users/twosigma","html_url":"https://github.com/twosigma","followers_url":"https://api.github.com/users/twosigma/followers","following_url":"https://api.github.com/users/twosigma/following{/other_user}","gists_url":"https://api.github.com/users/twosigma/gists{/gist_id}","starred_url":"https://api.github.com/users/twosigma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/twosigma/subscriptions","organizations_url":"https://api.github.com/users/twosigma/orgs","repos_url":"https://api.github.com/users/twosigma/repos","events_url":"https://api.github.com/users/twosigma/events{/privacy}","received_events_url":"https://api.github.com/users/twosigma/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/twosigma/waiter","description":"Runs, manages, and autoscales web services on Mesos and Kubernetes","fork":false,"url":"https://api.github.com/repos/twosigma/waiter","forks_url":"https://api.github.com/repos/twosigma/waiter/forks","keys_url":"https://api.github.com/repos/twosigma/waiter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/twosigma/waiter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/twosigma/waiter/teams","hooks_url":"https://api.github.com/repos/twosigma/waiter/hooks","issue_events_url":"https://api.github.com/repos/twosigma/waiter/issues/events{/number}","events_url":"https://api.github.com/repos/twosigma/waiter/events","assignees_url":"https://api.github.com/repos/twosigma/waiter/assignees{/user}","branches_url":"https://api.github.com/repos/twosigma/waiter/branches{/branch}","tags_url":"https://api.github.com/repos/twosigma/waiter/tags","blobs_url":"https://api.github.com/repos/twosigma/waiter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/twosigma/waiter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/twosigma/waiter/git/refs{/sha}","trees_url":"https://api.github.com/repos/twosigma/waiter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/twosigma/waiter/statuses/{sha}","languages_url":"https://api.github.com/repos/twosigma/waiter/languages","stargazers_url":"https://api.github.com/repos/twosigma/waiter/stargazers","contributors_url":"https://api.github.com/repos/twosigma/waiter/contributors","subscribers_url":"https://api.github.com/repos/twosigma/waiter/subscribers","subscription_url":"https://api.github.com/repos/twosigma/waiter/subscription","commits_url":"https://api.github.com/repos/twosigma/waiter/commits{/sha}","git_commits_url":"https://api.github.com/repos/twosigma/waiter/git/commits{/sha}","comments_url":"https://api.github.com/repos/twosigma/waiter/comments{/number}","issue_comment_url":"https://api.github.com/repos/twosigma/waiter/issues/comments{/number}","contents_url":"https://api.github.com/repos/twosigma/waiter/contents/{+path}","compare_url":"https://api.github.com/repos/twosigma/waiter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/twosigma/waiter/merges","archive_url":"https://api.github.com/repos/twosigma/waiter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/twosigma/waiter/downloads","issues_url":"https://api.github.com/repos/twosigma/waiter/issues{/number}","pulls_url":"https://api.github.com/repos/twosigma/waiter/pulls{/number}","milestones_url":"https://api.github.com/repos/twosigma/waiter/milestones{/number}","notifications_url":"https://api.github.com/repos/twosigma/waiter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/twosigma/waiter/labels{/name}","releases_url":"https://api.github.com/repos/twosigma/waiter/releases{/id}","deployments_url":"https://api.github.com/repos/twosigma/waiter/deployments","created_at":"2017-02-08T21:40:37Z","updated_at":"2018-08-27T15:10:49Z","pushed_at":"2018-08-27T20:47:10Z","git_url":"git://github.com/twosigma/waiter.git","ssh_url":"git@github.com:twosigma/waiter.git","clone_url":"https://github.com/twosigma/waiter.git","svn_url":"https://github.com/twosigma/waiter","homepage":"","size":3139,"stargazers_count":34,"watchers_count":34,"language":"Clojure","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":33,"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":8,"open_issues":33,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/426"},"html":{"href":"https://github.com/twosigma/waiter/pull/426"},"issue":{"href":"https://api.github.com/repos/twosigma/waiter/issues/426"},"comments":{"href":"https://api.github.com/repos/twosigma/waiter/issues/426/comments"},"review_comments":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/426/comments"},"review_comment":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/twosigma/waiter/pulls/426/commits"},"statuses":{"href":"https://api.github.com/repos/twosigma/waiter/statuses/ea08d9198dda062b8a12d5f7a444948d4b83da61"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"shamsimam"}}