{"action":"created","issue":{"url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8762","labels_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8762/labels{/name}","comments_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8762/comments","events_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8762/events","html_url":"https://github.com/OpenRA/OpenRA/pull/8762","id":96411224,"number":8762,"title":"Release file handles when unmounting file system","user":{"login":"RoosterDragon","id":3399086,"avatar_url":"https://avatars.githubusercontent.com/u/3399086?v=3","gravatar_id":"","url":"https://api.github.com/users/RoosterDragon","html_url":"https://github.com/RoosterDragon","followers_url":"https://api.github.com/users/RoosterDragon/followers","following_url":"https://api.github.com/users/RoosterDragon/following{/other_user}","gists_url":"https://api.github.com/users/RoosterDragon/gists{/gist_id}","starred_url":"https://api.github.com/users/RoosterDragon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RoosterDragon/subscriptions","organizations_url":"https://api.github.com/users/RoosterDragon/orgs","repos_url":"https://api.github.com/users/RoosterDragon/repos","events_url":"https://api.github.com/users/RoosterDragon/events{/privacy}","received_events_url":"https://api.github.com/users/RoosterDragon/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/OpenRA/OpenRA/labels/PR:%20Needs%20+2","name":"PR: Needs +2","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-07-21T20:38:48Z","updated_at":"2015-07-24T19:46:32Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/OpenRA/OpenRA/pulls/8762","html_url":"https://github.com/OpenRA/OpenRA/pull/8762","diff_url":"https://github.com/OpenRA/OpenRA/pull/8762.diff","patch_url":"https://github.com/OpenRA/OpenRA/pull/8762.patch"},"body":"Make ```IFolder``` implement ```IDisposable```, and fix all concrete classes to dispose any streams they open.\r\n\r\nWhen a folder is unmounted from ```GlobalFileSystem```, dispose the folder to ensure all the streams are released in a timely manner.\r\n\r\nThis prevents us eating up file handles longer than we should be, but as a secondary effect also means we'll avoid having multiple open file streams to the same file. It's a long shot, that might help with #2441 if having multiple streams is somehow causing occasional garbage reads (I doubt it - but on the other hand the only-occasionally-broken weirdness of #2441 is so crazy that maybe the solution is more crazy).\r\n\r\nTested by loading the game and switching between all the mods.\r\n\r\n[Diff ignoring whitespace](https://github.com/OpenRA/OpenRA/pull/8762/files?w=1)"},"comment":{"url":"https://api.github.com/repos/OpenRA/OpenRA/issues/comments/124677459","html_url":"https://github.com/OpenRA/OpenRA/pull/8762#issuecomment-124677459","issue_url":"https://api.github.com/repos/OpenRA/OpenRA/issues/8762","id":124677459,"user":{"login":"pchote","id":167819,"avatar_url":"https://avatars.githubusercontent.com/u/167819?v=3","gravatar_id":"","url":"https://api.github.com/users/pchote","html_url":"https://github.com/pchote","followers_url":"https://api.github.com/users/pchote/followers","following_url":"https://api.github.com/users/pchote/following{/other_user}","gists_url":"https://api.github.com/users/pchote/gists{/gist_id}","starred_url":"https://api.github.com/users/pchote/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pchote/subscriptions","organizations_url":"https://api.github.com/users/pchote/orgs","repos_url":"https://api.github.com/users/pchote/repos","events_url":"https://api.github.com/users/pchote/events{/privacy}","received_events_url":"https://api.github.com/users/pchote/received_events","type":"User","site_admin":false},"created_at":"2015-07-24T19:46:32Z","updated_at":"2015-07-24T19:46:32Z","body":"Looks good to me :+1:"}}