payload: {"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/31538","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/31538/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/31538/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/31538/events","html_url":"https://github.com/dotnet/roslyn/pull/31538","id":387538084,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM2MDA1Mjkw","number":31538,"title":"Store checksums as a first-class piece of data in our persistence layer.","user":{"login":"CyrusNajmabadi","id":4564579,"node_id":"MDQ6VXNlcjQ1NjQ1Nzk=","avatar_url":"https://avatars3.githubusercontent.com/u/4564579?v=4","gravatar_id":"","url":"https://api.github.com/users/CyrusNajmabadi","html_url":"https://github.com/CyrusNajmabadi","followers_url":"https://api.github.com/users/CyrusNajmabadi/followers","following_url":"https://api.github.com/users/CyrusNajmabadi/following{/other_user}","gists_url":"https://api.github.com/users/CyrusNajmabadi/gists{/gist_id}","starred_url":"https://api.github.com/users/CyrusNajmabadi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CyrusNajmabadi/subscriptions","organizations_url":"https://api.github.com/users/CyrusNajmabadi/orgs","repos_url":"https://api.github.com/users/CyrusNajmabadi/repos","events_url":"https://api.github.com/users/CyrusNajmabadi/events{/privacy}","received_events_url":"https://api.github.com/users/CyrusNajmabadi/received_events","type":"User","site_admin":false},"labels":[{"id":166377917,"node_id":"MDU6TGFiZWwxNjYzNzc5MTc=","url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-IDE","name":"Area-IDE","color":"5319e7","default":false},{"id":288147422,"node_id":"MDU6TGFiZWwyODgxNDc0MjI=","url":"https://api.github.com/repos/dotnet/roslyn/labels/Community","name":"Community","color":"0e8a16","default":false}],"state":"open","locked":false,"assignee":{"login":"heejaechang","id":1333179,"node_id":"MDQ6VXNlcjEzMzMxNzk=","avatar_url":"https://avatars3.githubusercontent.com/u/1333179?v=4","gravatar_id":"","url":"https://api.github.com/users/heejaechang","html_url":"https://github.com/heejaechang","followers_url":"https://api.github.com/users/heejaechang/followers","following_url":"https://api.github.com/users/heejaechang/following{/other_user}","gists_url":"https://api.github.com/users/heejaechang/gists{/gist_id}","starred_url":"https://api.github.com/users/heejaechang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heejaechang/subscriptions","organizations_url":"https://api.github.com/users/heejaechang/orgs","repos_url":"https://api.github.com/users/heejaechang/repos","events_url":"https://api.github.com/users/heejaechang/events{/privacy}","received_events_url":"https://api.github.com/users/heejaechang/received_events","type":"User","site_admin":false},"assignees":[{"login":"heejaechang","id":1333179,"node_id":"MDQ6VXNlcjEzMzMxNzk=","avatar_url":"https://avatars3.githubusercontent.com/u/1333179?v=4","gravatar_id":"","url":"https://api.github.com/users/heejaechang","html_url":"https://github.com/heejaechang","followers_url":"https://api.github.com/users/heejaechang/followers","following_url":"https://api.github.com/users/heejaechang/following{/other_user}","gists_url":"https://api.github.com/users/heejaechang/gists{/gist_id}","starred_url":"https://api.github.com/users/heejaechang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/heejaechang/subscriptions","organizations_url":"https://api.github.com/users/heejaechang/orgs","repos_url":"https://api.github.com/users/heejaechang/repos","events_url":"https://api.github.com/users/heejaechang/events{/privacy}","received_events_url":"https://api.github.com/users/heejaechang/received_events","type":"User","site_admin":false},{"login":"sharwell","id":1408396,"node_id":"MDQ6VXNlcjE0MDgzOTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1408396?v=4","gravatar_id":"","url":"https://api.github.com/users/sharwell","html_url":"https://github.com/sharwell","followers_url":"https://api.github.com/users/sharwell/followers","following_url":"https://api.github.com/users/sharwell/following{/other_user}","gists_url":"https://api.github.com/users/sharwell/gists{/gist_id}","starred_url":"https://api.github.com/users/sharwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharwell/subscriptions","organizations_url":"https://api.github.com/users/sharwell/orgs","repos_url":"https://api.github.com/users/sharwell/repos","events_url":"https://api.github.com/users/sharwell/events{/privacy}","received_events_url":"https://api.github.com/users/sharwell/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/roslyn/milestones/41","html_url":"https://github.com/dotnet/roslyn/milestone/41","labels_url":"https://api.github.com/repos/dotnet/roslyn/milestones/41/labels","id":4125502,"node_id":"MDk6TWlsZXN0b25lNDEyNTUwMg==","number":41,"title":"16.2","description":null,"creator":{"login":"sharwell","id":1408396,"node_id":"MDQ6VXNlcjE0MDgzOTY=","avatar_url":"https://avatars1.githubusercontent.com/u/1408396?v=4","gravatar_id":"","url":"https://api.github.com/users/sharwell","html_url":"https://github.com/sharwell","followers_url":"https://api.github.com/users/sharwell/followers","following_url":"https://api.github.com/users/sharwell/following{/other_user}","gists_url":"https://api.github.com/users/sharwell/gists{/gist_id}","starred_url":"https://api.github.com/users/sharwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sharwell/subscriptions","organizations_url":"https://api.github.com/users/sharwell/orgs","repos_url":"https://api.github.com/users/sharwell/repos","events_url":"https://api.github.com/users/sharwell/events{/privacy}","received_events_url":"https://api.github.com/users/sharwell/received_events","type":"User","site_admin":false},"open_issues":370,"closed_issues":123,"state":"open","created_at":"2019-03-10T03:33:05Z","updated_at":"2019-06-04T19:01:13Z","due_on":null,"closed_at":null},"comments":31,"created_at":"2018-12-05T00:20:02Z","updated_at":"2019-06-04T20:38:54Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/31538","html_url":"https://github.com/dotnet/roslyn/pull/31538","diff_url":"https://github.com/dotnet/roslyn/pull/31538.diff","patch_url":"https://github.com/dotnet/roslyn/pull/31538.patch"},"body":"https://github.com/dotnet/roslyn/pull/31538/files?w=1 will make the PR easier to read.\r\n\r\nThis PR expands on our existing IPersistenceStorage API by allowing clients to store a checksum along with data as a first class persistence object.  This is different from today where if a user wants to store checksum information they must store it *inside* the data they are storing in the persistence engine.\r\n\r\nThe benefit of this approach is taht it now allows clients to read and check that checksum information without having to read the entire row of the DB and process it.  For example, imagine out syntax indices for files are several KB each.  After a user opens a solution, we need to go check each index to see if we should recompute it.  Ideally, most of the time this shouldn't be necessary and we can check the persisted checksum against our current checksum.  However, with the older persistence system you'd have to read every single index out and validate it's checksum against the current checksum.  That means several large allocations and processing of that data, even for the common case of nothing changing.\r\n"},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/498834533","html_url":"https://github.com/dotnet/roslyn/pull/31538#issuecomment-498834533","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/31538","id":498834533,"node_id":"MDEyOklzc3VlQ29tbWVudDQ5ODgzNDUzMw==","user":{"login":"CyrusNajmabadi","id":4564579,"node_id":"MDQ6VXNlcjQ1NjQ1Nzk=","avatar_url":"https://avatars3.githubusercontent.com/u/4564579?v=4","gravatar_id":"","url":"https://api.github.com/users/CyrusNajmabadi","html_url":"https://github.com/CyrusNajmabadi","followers_url":"https://api.github.com/users/CyrusNajmabadi/followers","following_url":"https://api.github.com/users/CyrusNajmabadi/following{/other_user}","gists_url":"https://api.github.com/users/CyrusNajmabadi/gists{/gist_id}","starred_url":"https://api.github.com/users/CyrusNajmabadi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CyrusNajmabadi/subscriptions","organizations_url":"https://api.github.com/users/CyrusNajmabadi/orgs","repos_url":"https://api.github.com/users/CyrusNajmabadi/repos","events_url":"https://api.github.com/users/CyrusNajmabadi/events{/privacy}","received_events_url":"https://api.github.com/users/CyrusNajmabadi/received_events","type":"User","site_admin":false},"created_at":"2019-06-04T20:38:54Z","updated_at":"2019-06-04T20:38:54Z","author_association":"CONTRIBUTOR","body":"Thanks @heejaechang for doing all the rps work!"}}
other: {"actor":{"display_login":"CyrusNajmabadi"}}