{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/175947569","pull_request_review_id":105565565,"id":175947569,"diff_hunk":"@@ -30,6 +30,8 @@ private sealed partial class Tagger : IAccurateTagger<TTag>, IDisposable\n \n             private readonly ITextBuffer _subjectBuffer;\n \n+            private readonly CancellationTokenSource _cancellationTokenSource;","path":"src/EditorFeatures/Core/Tagging/AbstractAsynchronousTaggerProvider.Tagger.cs","position":4,"original_position":4,"commit_id":"e5c4f7f610ffe079f8e1c2d48476c3372cda5799","original_commit_id":"e5c4f7f610ffe079f8e1c2d48476c3372cda5799","user":{"login":"sharwell","id":1408396,"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},"body":"Correct","created_at":"2018-03-20T22:53:31Z","updated_at":"2018-03-20T22:53:31Z","html_url":"https://github.com/dotnet/roslyn/pull/25620#discussion_r175947569","pull_request_url":"https://api.github.com/repos/dotnet/roslyn/pulls/25620","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments/175947569"},"html":{"href":"https://github.com/dotnet/roslyn/pull/25620#discussion_r175947569"},"pull_request":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/25620"}},"in_reply_to_id":175945625},"pull_request":{"url":"https://api.github.com/repos/dotnet/roslyn/pulls/25620","id":176210074,"html_url":"https://github.com/dotnet/roslyn/pull/25620","diff_url":"https://github.com/dotnet/roslyn/pull/25620.diff","patch_url":"https://github.com/dotnet/roslyn/pull/25620.patch","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/25620","number":25620,"state":"open","locked":false,"title":"Cancel pending work on workspace dispose","user":{"login":"sharwell","id":1408396,"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},"body":"During my recent work to ensure asynchronous operations from a test complete before moving to the next test, I observed significant test delays due to the way pending work is handled when a workspace is disposed. Two items contributed to the majority of the delay:\r\n\r\n* In two main cases, pending work was scheduled without a cancellation token or the cancellation token source was not cancelled when the workspace was disposed\r\n* When a pending work item scheduled for execution in `ForegroundNotificationService` is cancelled, it is not immediately processed. Specifically, items scheduled for execution after a delay only registered the cancellation with `IAsyncToken` after the delay completed.\r\n\r\nThis pull request resolves the first item, and provides the ability for test code to resolve the second item through an API call after a workspace is disposed.\r\n\r\nThis change is not absolutely required for the work in #25560 to be included, but it avoids a ~1hr delay in overall test execution time.\r\n\r\n<details><summary>Ask Mode template not completed</summary>\r\n\r\n<!-- This template is not always required. If you aren't sure about whether it's needed or want help filling out the sections,\r\nsubmit the pull request and then ask us for help. :) -->\r\n\r\n### Customer scenario\r\n\r\nWhat does the customer do to get into this situation, and why do we think this\r\nis common enough to address for this release.  (Granted, sometimes this will be\r\nobvious \"Open project, VS crashes\" but in general, I need to understand how\r\ncommon a scenario is)\r\n\r\n### Bugs this fixes\r\n\r\n(either VSO or GitHub links)\r\n\r\n### Workarounds, if any\r\n\r\nAlso, why we think they are insufficient for RC vs. RC2, RC3, or RTW\r\n\r\n### Risk\r\n\r\nThis is generally a measure our how central the affected code is to adjacent\r\nscenarios and thus how likely your fix is to destabilize a broader area of code\r\n\r\n### Performance impact\r\n\r\n(with a brief justification for that assessment (e.g. \"Low perf impact because no extra allocations/no complexity changes\" vs. \"Low\")\r\n\r\n### Is this a regression from a previous update?\r\n\r\n### Root cause analysis\r\n\r\nHow did we miss it?  What tests are we adding to guard against it in the future?\r\n\r\n### How was the bug found?\r\n\r\n(E.g. customer reported it vs. ad hoc testing)\r\n\r\n### Test documentation updated?\r\n\r\nIf this is a new non-compiler feature or a significant improvement to an existing feature, update https://github.com/dotnet/roslyn/wiki/Manual-Testing once you know which release it is targeting.\r\n\r\n</details>\r\n","created_at":"2018-03-20T14:33:15Z","updated_at":"2018-03-20T22:53:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4f6378f4bf81ebc4f7ca8e161bbc95501128ea36","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/roslyn/pulls/25620/commits","review_comments_url":"https://api.github.com/repos/dotnet/roslyn/pulls/25620/comments","review_comment_url":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/25620/comments","statuses_url":"https://api.github.com/repos/dotnet/roslyn/statuses/e5c4f7f610ffe079f8e1c2d48476c3372cda5799","head":{"label":"sharwell:cancel-on-dispose","ref":"cancel-on-dispose","sha":"e5c4f7f610ffe079f8e1c2d48476c3372cda5799","user":{"login":"sharwell","id":1408396,"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},"repo":{"id":29280707,"name":"roslyn","full_name":"sharwell/roslyn","owner":{"login":"sharwell","id":1408396,"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},"private":false,"html_url":"https://github.com/sharwell/roslyn","description":"The .NET Compiler Platform (\"Roslyn\") provides open-source C# and Visual Basic compilers with rich code analysis APIs.","fork":true,"url":"https://api.github.com/repos/sharwell/roslyn","forks_url":"https://api.github.com/repos/sharwell/roslyn/forks","keys_url":"https://api.github.com/repos/sharwell/roslyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sharwell/roslyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sharwell/roslyn/teams","hooks_url":"https://api.github.com/repos/sharwell/roslyn/hooks","issue_events_url":"https://api.github.com/repos/sharwell/roslyn/issues/events{/number}","events_url":"https://api.github.com/repos/sharwell/roslyn/events","assignees_url":"https://api.github.com/repos/sharwell/roslyn/assignees{/user}","branches_url":"https://api.github.com/repos/sharwell/roslyn/branches{/branch}","tags_url":"https://api.github.com/repos/sharwell/roslyn/tags","blobs_url":"https://api.github.com/repos/sharwell/roslyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sharwell/roslyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sharwell/roslyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/sharwell/roslyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sharwell/roslyn/statuses/{sha}","languages_url":"https://api.github.com/repos/sharwell/roslyn/languages","stargazers_url":"https://api.github.com/repos/sharwell/roslyn/stargazers","contributors_url":"https://api.github.com/repos/sharwell/roslyn/contributors","subscribers_url":"https://api.github.com/repos/sharwell/roslyn/subscribers","subscription_url":"https://api.github.com/repos/sharwell/roslyn/subscription","commits_url":"https://api.github.com/repos/sharwell/roslyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/sharwell/roslyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/sharwell/roslyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/sharwell/roslyn/issues/comments{/number}","contents_url":"https://api.github.com/repos/sharwell/roslyn/contents/{+path}","compare_url":"https://api.github.com/repos/sharwell/roslyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sharwell/roslyn/merges","archive_url":"https://api.github.com/repos/sharwell/roslyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sharwell/roslyn/downloads","issues_url":"https://api.github.com/repos/sharwell/roslyn/issues{/number}","pulls_url":"https://api.github.com/repos/sharwell/roslyn/pulls{/number}","milestones_url":"https://api.github.com/repos/sharwell/roslyn/milestones{/number}","notifications_url":"https://api.github.com/repos/sharwell/roslyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sharwell/roslyn/labels{/name}","releases_url":"https://api.github.com/repos/sharwell/roslyn/releases{/id}","deployments_url":"https://api.github.com/repos/sharwell/roslyn/deployments","created_at":"2015-01-15T04:27:54Z","updated_at":"2017-05-08T15:17:43Z","pushed_at":"2018-03-20T20:52:23Z","git_url":"git://github.com/sharwell/roslyn.git","ssh_url":"git@github.com:sharwell/roslyn.git","clone_url":"https://github.com/sharwell/roslyn.git","svn_url":"https://github.com/sharwell/roslyn","homepage":"","size":291238,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:dev15.7.x","ref":"dev15.7.x","sha":"57d44b7858370486620900a4d8a34906c0dc9668","user":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":29078997,"name":"roslyn","full_name":"dotnet/roslyn","owner":{"login":"dotnet","id":9141961,"avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dotnet/roslyn","description":"The .NET Compiler Platform (\"Roslyn\") provides open-source C# and Visual Basic compilers with rich code analysis APIs.","fork":false,"url":"https://api.github.com/repos/dotnet/roslyn","forks_url":"https://api.github.com/repos/dotnet/roslyn/forks","keys_url":"https://api.github.com/repos/dotnet/roslyn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/roslyn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/roslyn/teams","hooks_url":"https://api.github.com/repos/dotnet/roslyn/hooks","issue_events_url":"https://api.github.com/repos/dotnet/roslyn/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/roslyn/events","assignees_url":"https://api.github.com/repos/dotnet/roslyn/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/roslyn/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/roslyn/tags","blobs_url":"https://api.github.com/repos/dotnet/roslyn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/roslyn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/roslyn/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/roslyn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/roslyn/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/roslyn/languages","stargazers_url":"https://api.github.com/repos/dotnet/roslyn/stargazers","contributors_url":"https://api.github.com/repos/dotnet/roslyn/contributors","subscribers_url":"https://api.github.com/repos/dotnet/roslyn/subscribers","subscription_url":"https://api.github.com/repos/dotnet/roslyn/subscription","commits_url":"https://api.github.com/repos/dotnet/roslyn/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/roslyn/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/roslyn/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/roslyn/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/roslyn/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/roslyn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/roslyn/merges","archive_url":"https://api.github.com/repos/dotnet/roslyn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/roslyn/downloads","issues_url":"https://api.github.com/repos/dotnet/roslyn/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/roslyn/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/roslyn/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/roslyn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/roslyn/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/roslyn/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/roslyn/deployments","created_at":"2015-01-11T02:39:03Z","updated_at":"2018-03-20T18:17:50Z","pushed_at":"2018-03-20T22:39:17Z","git_url":"git://github.com/dotnet/roslyn.git","ssh_url":"git@github.com:dotnet/roslyn.git","clone_url":"https://github.com/dotnet/roslyn.git","svn_url":"https://github.com/dotnet/roslyn","homepage":"","size":315705,"stargazers_count":9011,"watchers_count":9011,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2169,"mirror_url":null,"archived":false,"open_issues_count":4638,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":2169,"open_issues":4638,"watchers":9011,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/25620"},"html":{"href":"https://github.com/dotnet/roslyn/pull/25620"},"issue":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/25620"},"comments":{"href":"https://api.github.com/repos/dotnet/roslyn/issues/25620/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/25620/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/roslyn/pulls/25620/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/roslyn/statuses/e5c4f7f610ffe079f8e1c2d48476c3372cda5799"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sharwell"}}