{"action":"created","issue":{"url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/1113","labels_url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/1113/labels{/name}","comments_url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/1113/comments","events_url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/1113/events","html_url":"https://github.com/libgit2/libgit2sharp/pull/1113","id":90488710,"number":1113,"title":"Resolve FilterFixture NRE","user":{"login":"whoisj","id":11578325,"avatar_url":"https://avatars.githubusercontent.com/u/11578325?v=3","gravatar_id":"","url":"https://api.github.com/users/whoisj","html_url":"https://github.com/whoisj","followers_url":"https://api.github.com/users/whoisj/followers","following_url":"https://api.github.com/users/whoisj/following{/other_user}","gists_url":"https://api.github.com/users/whoisj/gists{/gist_id}","starred_url":"https://api.github.com/users/whoisj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whoisj/subscriptions","organizations_url":"https://api.github.com/users/whoisj/orgs","repos_url":"https://api.github.com/users/whoisj/repos","events_url":"https://api.github.com/users/whoisj/events{/privacy}","received_events_url":"https://api.github.com/users/whoisj/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":30,"created_at":"2015-06-23T20:55:34Z","updated_at":"2015-06-26T21:29:47Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/libgit2/libgit2sharp/pulls/1113","html_url":"https://github.com/libgit2/libgit2sharp/pull/1113","diff_url":"https://github.com/libgit2/libgit2sharp/pull/1113.diff","patch_url":"https://github.com/libgit2/libgit2sharp/pull/1113.patch"},"body":"Resolve racy NRE via re-architect of filter logic.\r\n\r\nMoves all filter logic into the `Filter` class. Made `Filter` into `IDisposable`.\r\n\r\nSeperates registration logic into the `FilterRegistration` class. Made `FilterRegistration` into `IDisposable`.\r\n\r\nMoves core registration logic into `FilterRegistration` while leaving legacy methods in `GlobalSettings`. Methods in `GlobalSettings` now forward to methods in `FilterRegistration`.\r\n\r\nRetains handles on all filter and registration values in static `FilterRegistration` class to prevent native code calling disposed managed objects resulting in NRE. Manages register, deregister, and dispose logic coherently.\r\n\r\nAdded a new test to verify improved features and Survivability.\r\n\r\nFixes a few other areas where NRE happened after GC collection vs. native utilization race occurred.\r\n\r\nFixes #1091"},"comment":{"url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/comments/115890808","html_url":"https://github.com/libgit2/libgit2sharp/pull/1113#issuecomment-115890808","issue_url":"https://api.github.com/repos/libgit2/libgit2sharp/issues/1113","id":115890808,"user":{"login":"whoisj","id":11578325,"avatar_url":"https://avatars.githubusercontent.com/u/11578325?v=3","gravatar_id":"","url":"https://api.github.com/users/whoisj","html_url":"https://github.com/whoisj","followers_url":"https://api.github.com/users/whoisj/followers","following_url":"https://api.github.com/users/whoisj/following{/other_user}","gists_url":"https://api.github.com/users/whoisj/gists{/gist_id}","starred_url":"https://api.github.com/users/whoisj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whoisj/subscriptions","organizations_url":"https://api.github.com/users/whoisj/orgs","repos_url":"https://api.github.com/users/whoisj/repos","events_url":"https://api.github.com/users/whoisj/events{/privacy}","received_events_url":"https://api.github.com/users/whoisj/received_events","type":"User","site_admin":false},"created_at":"2015-06-26T21:29:47Z","updated_at":"2015-06-26T21:29:47Z","body":"> @whoisj BTW, Could you please take a look at the failing builds?\r\n\r\nPer my comment above, it'll fail on that test until I revert my change. I'll get it fixed up asap (likely early next week)."}}