{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/238910783","pull_request_review_id":181538191,"id":238910783,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODkxMDc4Mw==","diff_hunk":"@@ -111,34 +113,107 @@ func CreatePodBackoff(defaultDuration, maxDuration time.Duration) *PodBackoff {\n // CreatePodBackoffWithClock creates a pod back-off object by default duration, max duration and clock.\n func CreatePodBackoffWithClock(defaultDuration, maxDuration time.Duration, clock clock) *PodBackoff {\n \treturn &PodBackoff{\n-\t\tperPodBackoff:   map[ktypes.NamespacedName]*BackoffEntry{},\n+\t\texpiryQ:         NewHeap(backoffEntryKeyFunc, backoffEntryCompareUpdate),\n \t\tclock:           clock,\n \t\tdefaultDuration: defaultDuration,\n \t\tmaxDuration:     maxDuration,\n \t}\n }\n \n-// GetEntry returns a back-off entry by Pod ID.\n-func (p *PodBackoff) GetEntry(podID ktypes.NamespacedName) *BackoffEntry {\n+// getEntry returns the backoffEntry for a given podID\n+func (p *PodBackoff) getEntry(podID ktypes.NamespacedName) *backoffEntry {\n+\tentry, exists, _ := p.expiryQ.GetByKey(podID.String())\n+\tvar be *backoffEntry\n+\tif !exists {\n+\t\tbe = &backoffEntry{\n+\t\t\tinitialized: false,\n+\t\t\tpodName:     podID,\n+\t\t\tbackoff:     p.defaultDuration,\n+\t\t}\n+\t\tp.expiryQ.Update(be)\n+\t} else {\n+\t\tbe = entry.(*backoffEntry)\n+\t}\n+\treturn be\n+}\n+\n+// BackoffPod updates the backoff for a podId and returns the duration until backoff completion\n+func (p *PodBackoff) BackoffPod(podID ktypes.NamespacedName) time.Duration {\n \tp.lock.Lock()\n \tdefer p.lock.Unlock()\n-\tentry, ok := p.perPodBackoff[podID]\n-\tif !ok {\n-\t\tentry = &BackoffEntry{backoff: p.defaultDuration}\n-\t\tp.perPodBackoff[podID] = entry\n-\t}\n+\tentry := p.getEntry(podID)\n \tentry.lastUpdate = p.clock.Now()\n-\treturn entry\n+\tp.expiryQ.Update(entry)\n+\treturn entry.getBackoff(p.maxDuration)\n+}\n+\n+// TryBackoffAndWait tries to acquire the backoff lock\n+func (p *PodBackoff) TryBackoffAndWait(podID ktypes.NamespacedName) bool {\n+\tp.lock.Lock()\n+\tentry := p.getEntry(podID)\n+\n+\tif !entry.tryLock() {\n+\t\tp.lock.Unlock()\n+\t\treturn false\n+\t}\n+\tdefer entry.unlock()\n+\tduration := entry.getBackoff(p.maxDuration)\n+\tp.lock.Unlock()\n+\ttime.Sleep(duration)\n+\treturn true\n }\n \n // Gc execute garbage collection on the pod back-off.\n func (p *PodBackoff) Gc() {\n \tp.lock.Lock()\n \tdefer p.lock.Unlock()\n \tnow := p.clock.Now()\n-\tfor podID, entry := range p.perPodBackoff {\n-\t\tif now.Sub(entry.lastUpdate) > p.maxDuration {\n-\t\t\tdelete(p.perPodBackoff, podID)\n+\tvar be *backoffEntry\n+\tfor {\n+\t\tentry := p.expiryQ.Peek()\n+\t\tif entry == nil {\n+\t\t\tbreak\n+\t\t}\n+\t\tbe = entry.(*backoffEntry)\n+\t\tif now.Sub(be.lastUpdate) > p.maxDuration {\n+\t\t\tp.expiryQ.Pop()\n+\t\t} else {\n+\t\t\tbreak\n \t\t}\n \t}\n }\n+\n+// GetBackoffTime returns the time that podID completes backoff\n+func (p *PodBackoff) GetBackoffTime(podID ktypes.NamespacedName) (time.Time, bool) {\n+\trawBe, exists, _ := p.expiryQ.GetByKey(podID.String())","path":"pkg/scheduler/util/backoff_utils.go","position":167,"original_position":167,"commit_id":"14ac2f46e8cb3d97720c767ee5db8ce3bf631234","original_commit_id":"14ac2f46e8cb3d97720c767ee5db8ce3bf631234","user":{"login":"bsalamat","id":14308438,"node_id":"MDQ6VXNlcjE0MzA4NDM4","avatar_url":"https://avatars3.githubusercontent.com/u/14308438?v=4","gravatar_id":"","url":"https://api.github.com/users/bsalamat","html_url":"https://github.com/bsalamat","followers_url":"https://api.github.com/users/bsalamat/followers","following_url":"https://api.github.com/users/bsalamat/following{/other_user}","gists_url":"https://api.github.com/users/bsalamat/gists{/gist_id}","starred_url":"https://api.github.com/users/bsalamat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsalamat/subscriptions","organizations_url":"https://api.github.com/users/bsalamat/orgs","repos_url":"https://api.github.com/users/bsalamat/repos","events_url":"https://api.github.com/users/bsalamat/events{/privacy}","received_events_url":"https://api.github.com/users/bsalamat/received_events","type":"User","site_admin":false},"body":"we need mutex locking here.","created_at":"2018-12-05T02:19:28Z","updated_at":"2018-12-05T02:53:59Z","html_url":"https://github.com/kubernetes/kubernetes/pull/57057#discussion_r238910783","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/238910783"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/57057#discussion_r238910783"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057","id":157696000,"node_id":"MDExOlB1bGxSZXF1ZXN0MTU3Njk2MDAw","html_url":"https://github.com/kubernetes/kubernetes/pull/57057","diff_url":"https://github.com/kubernetes/kubernetes/pull/57057.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/57057.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/57057","number":57057,"state":"open","locked":false,"title":"Reschedule with backoff","user":{"login":"greghaynes","id":42657,"node_id":"MDQ6VXNlcjQyNjU3","avatar_url":"https://avatars2.githubusercontent.com/u/42657?v=4","gravatar_id":"","url":"https://api.github.com/users/greghaynes","html_url":"https://github.com/greghaynes","followers_url":"https://api.github.com/users/greghaynes/followers","following_url":"https://api.github.com/users/greghaynes/following{/other_user}","gists_url":"https://api.github.com/users/greghaynes/gists{/gist_id}","starred_url":"https://api.github.com/users/greghaynes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greghaynes/subscriptions","organizations_url":"https://api.github.com/users/greghaynes/orgs","repos_url":"https://api.github.com/users/greghaynes/repos","events_url":"https://api.github.com/users/greghaynes/events{/privacy}","received_events_url":"https://api.github.com/users/greghaynes/received_events","type":"User","site_admin":false},"body":"With the alpha scheduling queue we move pods from unschedulable to active on certain events without a backoff. As a result we can cause starvation issues if high priority pods are in the unschedulable queue. Implement a backoff mechanism for pods being moved to active.\r\n\r\n```release-note\r\nTake pod backoff in to account when rescheduling a pod for any reason, not just due to a previous scheduling error.\r\n```\r\n\r\nCloses #56721","created_at":"2017-12-11T23:09:32Z","updated_at":"2018-12-05T02:53:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8da2e8016ea382bae810469266de9eed98694587","assignee":{"login":"bsalamat","id":14308438,"node_id":"MDQ6VXNlcjE0MzA4NDM4","avatar_url":"https://avatars3.githubusercontent.com/u/14308438?v=4","gravatar_id":"","url":"https://api.github.com/users/bsalamat","html_url":"https://github.com/bsalamat","followers_url":"https://api.github.com/users/bsalamat/followers","following_url":"https://api.github.com/users/bsalamat/following{/other_user}","gists_url":"https://api.github.com/users/bsalamat/gists{/gist_id}","starred_url":"https://api.github.com/users/bsalamat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsalamat/subscriptions","organizations_url":"https://api.github.com/users/bsalamat/orgs","repos_url":"https://api.github.com/users/bsalamat/repos","events_url":"https://api.github.com/users/bsalamat/events{/privacy}","received_events_url":"https://api.github.com/users/bsalamat/received_events","type":"User","site_admin":false},"assignees":[{"login":"bsalamat","id":14308438,"node_id":"MDQ6VXNlcjE0MzA4NDM4","avatar_url":"https://avatars3.githubusercontent.com/u/14308438?v=4","gravatar_id":"","url":"https://api.github.com/users/bsalamat","html_url":"https://github.com/bsalamat","followers_url":"https://api.github.com/users/bsalamat/followers","following_url":"https://api.github.com/users/bsalamat/following{/other_user}","gists_url":"https://api.github.com/users/bsalamat/gists{/gist_id}","starred_url":"https://api.github.com/users/bsalamat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsalamat/subscriptions","organizations_url":"https://api.github.com/users/bsalamat/orgs","repos_url":"https://api.github.com/users/bsalamat/repos","events_url":"https://api.github.com/users/bsalamat/events{/privacy}","received_events_url":"https://api.github.com/users/bsalamat/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"guangxuli","id":17472298,"node_id":"MDQ6VXNlcjE3NDcyMjk4","avatar_url":"https://avatars2.githubusercontent.com/u/17472298?v=4","gravatar_id":"","url":"https://api.github.com/users/guangxuli","html_url":"https://github.com/guangxuli","followers_url":"https://api.github.com/users/guangxuli/followers","following_url":"https://api.github.com/users/guangxuli/following{/other_user}","gists_url":"https://api.github.com/users/guangxuli/gists{/gist_id}","starred_url":"https://api.github.com/users/guangxuli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/guangxuli/subscriptions","organizations_url":"https://api.github.com/users/guangxuli/orgs","repos_url":"https://api.github.com/users/guangxuli/repos","events_url":"https://api.github.com/users/guangxuli/events{/privacy}","received_events_url":"https://api.github.com/users/guangxuli/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":477397086,"node_id":"MDU6TGFiZWw0NzczOTcwODY=","url":"https://api.github.com/repos/kubernetes/kubernetes/labels/cncf-cla:%20yes","name":"cncf-cla: yes","color":"bfe5bf","default":false},{"id":687565804,"node_id":"MDU6TGFiZWw2ODc1NjU4MDQ=","url":"https://api.github.com/repos/kubernetes/kubernetes/labels/do-not-merge/hold","name":"do-not-merge/hold","color":"e11d21","default":false},{"id":200149833,"node_id":"MDU6TGFiZWwyMDAxNDk4MzM=","url":"https://api.github.com/repos/kubernetes/kubernetes/labels/release-note","name":"release-note","color":"c2e0c6","default":false},{"id":125550211,"node_id":"MDU6TGFiZWwxMjU1NTAyMTE=","url":"https://api.github.com/repos/kubernetes/kubernetes/labels/sig/scheduling","name":"sig/scheduling","color":"d2b48c","default":false},{"id":253451093,"node_id":"MDU6TGFiZWwyNTM0NTEwOTM=","url":"https://api.github.com/repos/kubernetes/kubernetes/labels/size/XXL","name":"size/XXL","color":"ee0000","default":false}],"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/41","html_url":"https://github.com/kubernetes/kubernetes/milestone/41","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/41/labels","id":3751947,"node_id":"MDk6TWlsZXN0b25lMzc1MTk0Nw==","number":41,"title":"v1.14","description":"","creator":{"login":"idealhack","id":408385,"node_id":"MDQ6VXNlcjQwODM4NQ==","avatar_url":"https://avatars0.githubusercontent.com/u/408385?v=4","gravatar_id":"","url":"https://api.github.com/users/idealhack","html_url":"https://github.com/idealhack","followers_url":"https://api.github.com/users/idealhack/followers","following_url":"https://api.github.com/users/idealhack/following{/other_user}","gists_url":"https://api.github.com/users/idealhack/gists{/gist_id}","starred_url":"https://api.github.com/users/idealhack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/idealhack/subscriptions","organizations_url":"https://api.github.com/users/idealhack/orgs","repos_url":"https://api.github.com/users/idealhack/repos","events_url":"https://api.github.com/users/idealhack/events{/privacy}","received_events_url":"https://api.github.com/users/idealhack/received_events","type":"User","site_admin":false},"open_issues":72,"closed_issues":18,"state":"open","created_at":"2018-10-19T11:05:25Z","updated_at":"2018-12-05T01:31:34Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/57057/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/14ac2f46e8cb3d97720c767ee5db8ce3bf631234","head":{"label":"greghaynes:reschedule-with-backoff","ref":"reschedule-with-backoff","sha":"14ac2f46e8cb3d97720c767ee5db8ce3bf631234","user":{"login":"greghaynes","id":42657,"node_id":"MDQ6VXNlcjQyNjU3","avatar_url":"https://avatars2.githubusercontent.com/u/42657?v=4","gravatar_id":"","url":"https://api.github.com/users/greghaynes","html_url":"https://github.com/greghaynes","followers_url":"https://api.github.com/users/greghaynes/followers","following_url":"https://api.github.com/users/greghaynes/following{/other_user}","gists_url":"https://api.github.com/users/greghaynes/gists{/gist_id}","starred_url":"https://api.github.com/users/greghaynes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greghaynes/subscriptions","organizations_url":"https://api.github.com/users/greghaynes/orgs","repos_url":"https://api.github.com/users/greghaynes/repos","events_url":"https://api.github.com/users/greghaynes/events{/privacy}","received_events_url":"https://api.github.com/users/greghaynes/received_events","type":"User","site_admin":false},"repo":{"id":93537646,"node_id":"MDEwOlJlcG9zaXRvcnk5MzUzNzY0Ng==","name":"kubernetes","full_name":"greghaynes/kubernetes","private":false,"owner":{"login":"greghaynes","id":42657,"node_id":"MDQ6VXNlcjQyNjU3","avatar_url":"https://avatars2.githubusercontent.com/u/42657?v=4","gravatar_id":"","url":"https://api.github.com/users/greghaynes","html_url":"https://github.com/greghaynes","followers_url":"https://api.github.com/users/greghaynes/followers","following_url":"https://api.github.com/users/greghaynes/following{/other_user}","gists_url":"https://api.github.com/users/greghaynes/gists{/gist_id}","starred_url":"https://api.github.com/users/greghaynes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greghaynes/subscriptions","organizations_url":"https://api.github.com/users/greghaynes/orgs","repos_url":"https://api.github.com/users/greghaynes/repos","events_url":"https://api.github.com/users/greghaynes/events{/privacy}","received_events_url":"https://api.github.com/users/greghaynes/received_events","type":"User","site_admin":false},"html_url":"https://github.com/greghaynes/kubernetes","description":"Production-Grade Container Scheduling and Management","fork":true,"url":"https://api.github.com/repos/greghaynes/kubernetes","forks_url":"https://api.github.com/repos/greghaynes/kubernetes/forks","keys_url":"https://api.github.com/repos/greghaynes/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/greghaynes/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/greghaynes/kubernetes/teams","hooks_url":"https://api.github.com/repos/greghaynes/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/greghaynes/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/greghaynes/kubernetes/events","assignees_url":"https://api.github.com/repos/greghaynes/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/greghaynes/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/greghaynes/kubernetes/tags","blobs_url":"https://api.github.com/repos/greghaynes/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/greghaynes/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/greghaynes/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/greghaynes/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/greghaynes/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/greghaynes/kubernetes/languages","stargazers_url":"https://api.github.com/repos/greghaynes/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/greghaynes/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/greghaynes/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/greghaynes/kubernetes/subscription","commits_url":"https://api.github.com/repos/greghaynes/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/greghaynes/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/greghaynes/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/greghaynes/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/greghaynes/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/greghaynes/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/greghaynes/kubernetes/merges","archive_url":"https://api.github.com/repos/greghaynes/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/greghaynes/kubernetes/downloads","issues_url":"https://api.github.com/repos/greghaynes/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/greghaynes/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/greghaynes/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/greghaynes/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/greghaynes/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/greghaynes/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/greghaynes/kubernetes/deployments","created_at":"2017-06-06T16:03:56Z","updated_at":"2017-06-06T16:04:36Z","pushed_at":"2018-12-04T19:26:41Z","git_url":"git://github.com/greghaynes/kubernetes.git","ssh_url":"git@github.com:greghaynes/kubernetes.git","clone_url":"https://github.com/greghaynes/kubernetes.git","svn_url":"https://github.com/greghaynes/kubernetes","homepage":"http://kubernetes.io","size":582155,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":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":"kubernetes:master","ref":"master","sha":"7af52384ea8c3314a28c6471d62d824a05c36d35","user":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"node_id":"MDEwOlJlcG9zaXRvcnkyMDU4MDQ5OA==","name":"kubernetes","full_name":"kubernetes/kubernetes","private":false,"owner":{"login":"kubernetes","id":13629408,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzNjI5NDA4","avatar_url":"https://avatars2.githubusercontent.com/u/13629408?v=4","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/kubernetes/kubernetes","description":"Production-Grade Container Scheduling and Management","fork":false,"url":"https://api.github.com/repos/kubernetes/kubernetes","forks_url":"https://api.github.com/repos/kubernetes/kubernetes/forks","keys_url":"https://api.github.com/repos/kubernetes/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kubernetes/teams","hooks_url":"https://api.github.com/repos/kubernetes/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kubernetes/events","assignees_url":"https://api.github.com/repos/kubernetes/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kubernetes/tags","blobs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kubernetes/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kubernetes/subscription","commits_url":"https://api.github.com/repos/kubernetes/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kubernetes/merges","archive_url":"https://api.github.com/repos/kubernetes/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kubernetes/downloads","issues_url":"https://api.github.com/repos/kubernetes/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kubernetes/deployments","created_at":"2014-06-06T22:56:04Z","updated_at":"2018-12-05T02:45:19Z","pushed_at":"2018-12-05T02:42:25Z","git_url":"git://github.com/kubernetes/kubernetes.git","ssh_url":"git@github.com:kubernetes/kubernetes.git","clone_url":"https://github.com/kubernetes/kubernetes.git","svn_url":"https://github.com/kubernetes/kubernetes","homepage":"https://kubernetes.io","size":817698,"stargazers_count":44804,"watchers_count":44804,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":15522,"mirror_url":null,"archived":false,"open_issues_count":3191,"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":15522,"open_issues":3191,"watchers":44804,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/57057"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/57057"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/57057/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/57057/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/14ac2f46e8cb3d97720c767ee5db8ce3bf631234"}},"author_association":"NONE"}}
{"actor":{"display_login":"bsalamat"}}