{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/3183","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/3183/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/3183/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/3183/events","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/3183","id":53160032,"number":3183,"title":"Avoid race between image pull and garbage collect","user":{"login":"anguslees","id":224224,"avatar_url":"https://avatars.githubusercontent.com/u/224224?v=3","gravatar_id":"","url":"https://api.github.com/users/anguslees","html_url":"https://github.com/anguslees","followers_url":"https://api.github.com/users/anguslees/followers","following_url":"https://api.github.com/users/anguslees/following{/other_user}","gists_url":"https://api.github.com/users/anguslees/gists{/gist_id}","starred_url":"https://api.github.com/users/anguslees/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anguslees/subscriptions","organizations_url":"https://api.github.com/users/anguslees/orgs","repos_url":"https://api.github.com/users/anguslees/repos","events_url":"https://api.github.com/users/anguslees/events{/privacy}","received_events_url":"https://api.github.com/users/anguslees/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"brendandburns","id":5751682,"avatar_url":"https://avatars.githubusercontent.com/u/5751682?v=3","gravatar_id":"","url":"https://api.github.com/users/brendandburns","html_url":"https://github.com/brendandburns","followers_url":"https://api.github.com/users/brendandburns/followers","following_url":"https://api.github.com/users/brendandburns/following{/other_user}","gists_url":"https://api.github.com/users/brendandburns/gists{/gist_id}","starred_url":"https://api.github.com/users/brendandburns/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brendandburns/subscriptions","organizations_url":"https://api.github.com/users/brendandburns/orgs","repos_url":"https://api.github.com/users/brendandburns/repos","events_url":"https://api.github.com/users/brendandburns/events{/privacy}","received_events_url":"https://api.github.com/users/brendandburns/received_events","type":"User","site_admin":false},"milestone":null,"comments":7,"created_at":"2014-12-31T00:53:31Z","updated_at":"2015-01-07T05:10:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/3183","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/3183","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/3183.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/3183.patch"},"body":"Hold the pullLock while pulling regular container images, not just the\r\nnetwork container.\r\n\r\nAlso: previously, the locks were grabbed at too-low a layer in the\r\ncallstack, leaving a (narrow) window where images could be pulled and\r\nthen garbage collected before being used.\r\n\r\nThis change takes the existing pullLock a layer higher in the call stack\r\nso the critical regions encompass the entire find+delete and pull+use\r\noperation in both cases."},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/68979723","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/3183#issuecomment-68979723","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/3183","id":68979723,"user":{"login":"brendandburns","id":5751682,"avatar_url":"https://avatars.githubusercontent.com/u/5751682?v=3","gravatar_id":"","url":"https://api.github.com/users/brendandburns","html_url":"https://github.com/brendandburns","followers_url":"https://api.github.com/users/brendandburns/followers","following_url":"https://api.github.com/users/brendandburns/following{/other_user}","gists_url":"https://api.github.com/users/brendandburns/gists{/gist_id}","starred_url":"https://api.github.com/users/brendandburns/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brendandburns/subscriptions","organizations_url":"https://api.github.com/users/brendandburns/orgs","repos_url":"https://api.github.com/users/brendandburns/repos","events_url":"https://api.github.com/users/brendandburns/events{/privacy}","received_events_url":"https://api.github.com/users/brendandburns/received_events","type":"User","site_admin":false},"created_at":"2015-01-07T05:10:57Z","updated_at":"2015-01-07T05:10:57Z","body":"The problem is really underlying in Docker.  There is really no good way to know if an image is unreachable.\r\n\r\nI'm ok with only GC-ing images where the Created is > some window.\r\n\r\nThis whole thing is a giant hack, but it's hard to see how to resolve it without better support inside of Docker."}}