{"action":"created","issue":{"url":"https://api.github.com/repos/StyleCI/StyleCI/issues/373","labels_url":"https://api.github.com/repos/StyleCI/StyleCI/issues/373/labels{/name}","comments_url":"https://api.github.com/repos/StyleCI/StyleCI/issues/373/comments","events_url":"https://api.github.com/repos/StyleCI/StyleCI/issues/373/events","html_url":"https://github.com/StyleCI/StyleCI/issues/373","id":91381652,"number":373,"title":"Repo Locking","user":{"login":"GrahamCampbell","id":2829600,"avatar_url":"https://avatars.githubusercontent.com/u/2829600?v=3","gravatar_id":"","url":"https://api.github.com/users/GrahamCampbell","html_url":"https://github.com/GrahamCampbell","followers_url":"https://api.github.com/users/GrahamCampbell/followers","following_url":"https://api.github.com/users/GrahamCampbell/following{/other_user}","gists_url":"https://api.github.com/users/GrahamCampbell/gists{/gist_id}","starred_url":"https://api.github.com/users/GrahamCampbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrahamCampbell/subscriptions","organizations_url":"https://api.github.com/users/GrahamCampbell/orgs","repos_url":"https://api.github.com/users/GrahamCampbell/repos","events_url":"https://api.github.com/users/GrahamCampbell/events{/privacy}","received_events_url":"https://api.github.com/users/GrahamCampbell/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/StyleCI/StyleCI/milestones/4","html_url":"https://github.com/StyleCI/StyleCI/milestones/V0.4.0%20Alpha","labels_url":"https://api.github.com/repos/StyleCI/StyleCI/milestones/4/labels","id":984301,"number":4,"title":"V0.4.0 Alpha","description":"","creator":{"login":"GrahamCampbell","id":2829600,"avatar_url":"https://avatars.githubusercontent.com/u/2829600?v=3","gravatar_id":"","url":"https://api.github.com/users/GrahamCampbell","html_url":"https://github.com/GrahamCampbell","followers_url":"https://api.github.com/users/GrahamCampbell/followers","following_url":"https://api.github.com/users/GrahamCampbell/following{/other_user}","gists_url":"https://api.github.com/users/GrahamCampbell/gists{/gist_id}","starred_url":"https://api.github.com/users/GrahamCampbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrahamCampbell/subscriptions","organizations_url":"https://api.github.com/users/GrahamCampbell/orgs","repos_url":"https://api.github.com/users/GrahamCampbell/repos","events_url":"https://api.github.com/users/GrahamCampbell/events{/privacy}","received_events_url":"https://api.github.com/users/GrahamCampbell/received_events","type":"User","site_admin":false},"open_issues":16,"closed_issues":30,"state":"open","created_at":"2015-02-18T10:41:50Z","updated_at":"2015-07-01T21:49:32Z","due_on":"2015-07-17T23:00:00Z","closed_at":null},"comments":3,"created_at":"2015-06-26T23:00:41Z","updated_at":"2015-07-01T22:05:16Z","closed_at":null,"body":"We need to make it impossible to a repo to be garbage collected during analysis. Consider the gc does a scan of the repos, then starts deleting them, and then while folders are getting deleted, and analysis kicks off using a repo that's about to get deleted. We then have a mess...\r\n\r\nThat said, I'd expect the garbage collector to error and for the analysis to error, though the analysis will error at the git stage, so the persistent git repo object will actually just delete it's failed attempt and start again, so we're not in a bad situation for that case.\r\n\r\nThe other possible case is worse but less likely. Consider a clone has managed to complete in the time the gc has been running, and then the actual code analysis starts and the gc comes and tries to delete the code. Then we take a diff, a load of the code has been deleted. Not very good..."},"comment":{"url":"https://api.github.com/repos/StyleCI/StyleCI/issues/comments/117838135","html_url":"https://github.com/StyleCI/StyleCI/issues/373#issuecomment-117838135","issue_url":"https://api.github.com/repos/StyleCI/StyleCI/issues/373","id":117838135,"user":{"login":"GrahamCampbell","id":2829600,"avatar_url":"https://avatars.githubusercontent.com/u/2829600?v=3","gravatar_id":"","url":"https://api.github.com/users/GrahamCampbell","html_url":"https://github.com/GrahamCampbell","followers_url":"https://api.github.com/users/GrahamCampbell/followers","following_url":"https://api.github.com/users/GrahamCampbell/following{/other_user}","gists_url":"https://api.github.com/users/GrahamCampbell/gists{/gist_id}","starred_url":"https://api.github.com/users/GrahamCampbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrahamCampbell/subscriptions","organizations_url":"https://api.github.com/users/GrahamCampbell/orgs","repos_url":"https://api.github.com/users/GrahamCampbell/repos","events_url":"https://api.github.com/users/GrahamCampbell/events{/privacy}","received_events_url":"https://api.github.com/users/GrahamCampbell/received_events","type":"User","site_admin":false},"created_at":"2015-07-01T22:05:16Z","updated_at":"2015-07-01T22:05:16Z","body":"There's probably a better way of doing this. Just check the age of the folder again just before removing it."}}