{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/orleans/pulls/comments/168448622","pull_request_review_id":96814223,"id":168448622,"diff_hunk":"@@ -0,0 +1,46 @@\n+﻿\n+using System;\n+using Microsoft.Extensions.DependencyInjection;\n+using Orleans.Configuration;\n+using Orleans.Hosting;\n+using OrleansAWSUtils.Streams;\n+\n+namespace Orleans.Hosting\n+{\n+    public static class ClientBuilderExtensions\n+    {\n+        /// <summary>\n+        /// Configure cluster client to use SQS persistent streams.\n+        /// </summary>\n+        public static IClientBuilder AddSqsStreams(this IClientBuilder builder, string name, Action<SqsStreamOptions> configureOptions)\n+        {\n+            return builder.ConfigureServices(services => services.AddClusterClientSqsStreams(name, configureOptions));\n+        }\n+\n+        /// <summary>\n+        /// Configure cluster client to use SQS persistent streams.\n+        /// </summary>\n+        public static IClientBuilder AddSqsStreams(this IClientBuilder builder, string name, Action<OptionsBuilder<SqsStreamOptions>> configureOptions = null)\n+        {\n+            return builder.ConfigureServices(services => services.AddClusterClientSqsStreams(name, configureOptions));\n+        }\n+\n+        /// <summary>\n+        /// Configure cluster client to use SQS persistent streams.\n+        /// </summary>\n+        public static IServiceCollection AddClusterClientSqsStreams(this IServiceCollection services, string name, Action<SqsStreamOptions> configureOptions)\n+        {\n+            return services.AddClusterClientSqsStreams(name, ob => ob.Configure(configureOptions));\n+        }\n+\n+        /// <summary>\n+        /// Configure cluster client to use SQS persistent streams.\n+        /// </summary>\n+        public static IServiceCollection AddClusterClientSqsStreams(this IServiceCollection services, string name,","path":"src/AWS/Orleans.Streaming.SQS/Hosting/ClientBuilderExtensions.cs","position":39,"original_position":39,"commit_id":"2d99bd110f5b3093d2df8ce65d30aa1d7ee3dbfe","original_commit_id":"2d99bd110f5b3093d2df8ce65d30aa1d7ee3dbfe","user":{"login":"galvesribeiro","id":4714040,"avatar_url":"https://avatars3.githubusercontent.com/u/4714040?v=4","gravatar_id":"","url":"https://api.github.com/users/galvesribeiro","html_url":"https://github.com/galvesribeiro","followers_url":"https://api.github.com/users/galvesribeiro/followers","following_url":"https://api.github.com/users/galvesribeiro/following{/other_user}","gists_url":"https://api.github.com/users/galvesribeiro/gists{/gist_id}","starred_url":"https://api.github.com/users/galvesribeiro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galvesribeiro/subscriptions","organizations_url":"https://api.github.com/users/galvesribeiro/orgs","repos_url":"https://api.github.com/users/galvesribeiro/repos","events_url":"https://api.github.com/users/galvesribeiro/events{/privacy}","received_events_url":"https://api.github.com/users/galvesribeiro/received_events","type":"User","site_admin":false},"body":"I see... Well, other framework (including asp.net) does that IIRC. However, I think we should have diff assemblies for client and silo for the providers. For example, in Membership, makes no sense to bring the Membership table to the client, but instead it should be only have the gateway. So `Orleans.Clustering.XXXX` and `Orleans.Clustering.XXXX.Client`(or `Gateway`). I know, extra nuget package to maintain, but the benefits are:\r\n\r\n1. Avoid this confusion with extensions\r\n2. Avoid having 2 methods for client and silo\r\n3. In the case of clustering, remove the dependency on the runtime/silo assemblies on teh client.","created_at":"2018-02-15T11:29:25Z","updated_at":"2018-02-15T11:29:25Z","html_url":"https://github.com/dotnet/orleans/pull/4042#discussion_r168448622","pull_request_url":"https://api.github.com/repos/dotnet/orleans/pulls/4042","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/comments/168448622"},"html":{"href":"https://github.com/dotnet/orleans/pull/4042#discussion_r168448622"},"pull_request":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/4042"}},"in_reply_to_id":168371454},"pull_request":{"url":"https://api.github.com/repos/dotnet/orleans/pulls/4042","id":169274801,"html_url":"https://github.com/dotnet/orleans/pull/4042","diff_url":"https://github.com/dotnet/orleans/pull/4042.diff","patch_url":"https://github.com/dotnet/orleans/pull/4042.patch","issue_url":"https://api.github.com/repos/dotnet/orleans/issues/4042","number":4042,"state":"open","locked":false,"title":"WIP - Persistent stream provider to lifecycle","user":{"login":"jason-bragg","id":10675494,"avatar_url":"https://avatars2.githubusercontent.com/u/10675494?v=4","gravatar_id":"","url":"https://api.github.com/users/jason-bragg","html_url":"https://github.com/jason-bragg","followers_url":"https://api.github.com/users/jason-bragg/followers","following_url":"https://api.github.com/users/jason-bragg/following{/other_user}","gists_url":"https://api.github.com/users/jason-bragg/gists{/gist_id}","starred_url":"https://api.github.com/users/jason-bragg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jason-bragg/subscriptions","organizations_url":"https://api.github.com/users/jason-bragg/orgs","repos_url":"https://api.github.com/users/jason-bragg/repos","events_url":"https://api.github.com/users/jason-bragg/events{/privacy}","received_events_url":"https://api.github.com/users/jason-bragg/received_events","type":"User","site_admin":false},"body":"Pushing this PR out to get eyes on it, but it's not passing testing yet.  Still WIP.\r\n\r\nSince persistent stream provider is the base for most of our steam providers, we couldn't refactor these one at a time.\r\n\r\nFollowing stream providers now use options and lifecycle.\r\n* Azure Queue\r\n* EventHub\r\n* Sqs\r\n* PubSub\r\n* Memory\r\n* Generator\r\n* EventDataGenerator\r\n* Various test providers\r\n\r\nTBD:\r\nFix tests.\r\nMove options to Orleans.Configuration namespace.\r\nReplace DataConnectionStream with ConnectionString in options to conform to other options.\r\nPossibly validators, but would like to push that to separate PR, given the size of this change.\r\n\r\nNOTE:  Persistent stream providers and various adapters are complex and patterns can be improved now that we can inject dependencies, but current patterns are best effort port.  Please note where further refactoring in the future is warranted.\r\n\r\nFuture Refactor:\r\n* Data Adapters\r\n* Inject checkpointing\r\n* Inject generators (for generated streams)\r\n* Inject failure handlers\r\n* Possible adapter or provider builders\r\n","created_at":"2018-02-15T02:52:04Z","updated_at":"2018-02-15T11:29:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4f928ff2ef4651fbb9819a2a86cc8205fde8d057","assignee":{"login":"xiazen","id":20803801,"avatar_url":"https://avatars3.githubusercontent.com/u/20803801?v=4","gravatar_id":"","url":"https://api.github.com/users/xiazen","html_url":"https://github.com/xiazen","followers_url":"https://api.github.com/users/xiazen/followers","following_url":"https://api.github.com/users/xiazen/following{/other_user}","gists_url":"https://api.github.com/users/xiazen/gists{/gist_id}","starred_url":"https://api.github.com/users/xiazen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiazen/subscriptions","organizations_url":"https://api.github.com/users/xiazen/orgs","repos_url":"https://api.github.com/users/xiazen/repos","events_url":"https://api.github.com/users/xiazen/events{/privacy}","received_events_url":"https://api.github.com/users/xiazen/received_events","type":"User","site_admin":false},"assignees":[{"login":"xiazen","id":20803801,"avatar_url":"https://avatars3.githubusercontent.com/u/20803801?v=4","gravatar_id":"","url":"https://api.github.com/users/xiazen","html_url":"https://github.com/xiazen","followers_url":"https://api.github.com/users/xiazen/followers","following_url":"https://api.github.com/users/xiazen/following{/other_user}","gists_url":"https://api.github.com/users/xiazen/gists{/gist_id}","starred_url":"https://api.github.com/users/xiazen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiazen/subscriptions","organizations_url":"https://api.github.com/users/xiazen/orgs","repos_url":"https://api.github.com/users/xiazen/repos","events_url":"https://api.github.com/users/xiazen/events{/privacy}","received_events_url":"https://api.github.com/users/xiazen/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"sergeybykov","id":8248806,"avatar_url":"https://avatars1.githubusercontent.com/u/8248806?v=4","gravatar_id":"","url":"https://api.github.com/users/sergeybykov","html_url":"https://github.com/sergeybykov","followers_url":"https://api.github.com/users/sergeybykov/followers","following_url":"https://api.github.com/users/sergeybykov/following{/other_user}","gists_url":"https://api.github.com/users/sergeybykov/gists{/gist_id}","starred_url":"https://api.github.com/users/sergeybykov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergeybykov/subscriptions","organizations_url":"https://api.github.com/users/sergeybykov/orgs","repos_url":"https://api.github.com/users/sergeybykov/repos","events_url":"https://api.github.com/users/sergeybykov/events{/privacy}","received_events_url":"https://api.github.com/users/sergeybykov/received_events","type":"User","site_admin":false},{"login":"benjaminpetit","id":20427417,"avatar_url":"https://avatars0.githubusercontent.com/u/20427417?v=4","gravatar_id":"","url":"https://api.github.com/users/benjaminpetit","html_url":"https://github.com/benjaminpetit","followers_url":"https://api.github.com/users/benjaminpetit/followers","following_url":"https://api.github.com/users/benjaminpetit/following{/other_user}","gists_url":"https://api.github.com/users/benjaminpetit/gists{/gist_id}","starred_url":"https://api.github.com/users/benjaminpetit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benjaminpetit/subscriptions","organizations_url":"https://api.github.com/users/benjaminpetit/orgs","repos_url":"https://api.github.com/users/benjaminpetit/repos","events_url":"https://api.github.com/users/benjaminpetit/events{/privacy}","received_events_url":"https://api.github.com/users/benjaminpetit/received_events","type":"User","site_admin":false},{"login":"xiazen","id":20803801,"avatar_url":"https://avatars3.githubusercontent.com/u/20803801?v=4","gravatar_id":"","url":"https://api.github.com/users/xiazen","html_url":"https://github.com/xiazen","followers_url":"https://api.github.com/users/xiazen/followers","following_url":"https://api.github.com/users/xiazen/following{/other_user}","gists_url":"https://api.github.com/users/xiazen/gists{/gist_id}","starred_url":"https://api.github.com/users/xiazen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiazen/subscriptions","organizations_url":"https://api.github.com/users/xiazen/orgs","repos_url":"https://api.github.com/users/xiazen/repos","events_url":"https://api.github.com/users/xiazen/events{/privacy}","received_events_url":"https://api.github.com/users/xiazen/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":195190704,"url":"https://api.github.com/repos/dotnet/orleans/labels/work-in-progress","name":"work-in-progress","color":"fad8c7","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/dotnet/orleans/pulls/4042/commits","review_comments_url":"https://api.github.com/repos/dotnet/orleans/pulls/4042/comments","review_comment_url":"https://api.github.com/repos/dotnet/orleans/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/orleans/issues/4042/comments","statuses_url":"https://api.github.com/repos/dotnet/orleans/statuses/2d99bd110f5b3093d2df8ce65d30aa1d7ee3dbfe","head":{"label":"jason-bragg:PersistentStreamProviderToLifecycle","ref":"PersistentStreamProviderToLifecycle","sha":"2d99bd110f5b3093d2df8ce65d30aa1d7ee3dbfe","user":{"login":"jason-bragg","id":10675494,"avatar_url":"https://avatars2.githubusercontent.com/u/10675494?v=4","gravatar_id":"","url":"https://api.github.com/users/jason-bragg","html_url":"https://github.com/jason-bragg","followers_url":"https://api.github.com/users/jason-bragg/followers","following_url":"https://api.github.com/users/jason-bragg/following{/other_user}","gists_url":"https://api.github.com/users/jason-bragg/gists{/gist_id}","starred_url":"https://api.github.com/users/jason-bragg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jason-bragg/subscriptions","organizations_url":"https://api.github.com/users/jason-bragg/orgs","repos_url":"https://api.github.com/users/jason-bragg/repos","events_url":"https://api.github.com/users/jason-bragg/events{/privacy}","received_events_url":"https://api.github.com/users/jason-bragg/received_events","type":"User","site_admin":false},"repo":{"id":29758989,"name":"orleans","full_name":"jason-bragg/orleans","owner":{"login":"jason-bragg","id":10675494,"avatar_url":"https://avatars2.githubusercontent.com/u/10675494?v=4","gravatar_id":"","url":"https://api.github.com/users/jason-bragg","html_url":"https://github.com/jason-bragg","followers_url":"https://api.github.com/users/jason-bragg/followers","following_url":"https://api.github.com/users/jason-bragg/following{/other_user}","gists_url":"https://api.github.com/users/jason-bragg/gists{/gist_id}","starred_url":"https://api.github.com/users/jason-bragg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jason-bragg/subscriptions","organizations_url":"https://api.github.com/users/jason-bragg/orgs","repos_url":"https://api.github.com/users/jason-bragg/repos","events_url":"https://api.github.com/users/jason-bragg/events{/privacy}","received_events_url":"https://api.github.com/users/jason-bragg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jason-bragg/orleans","description":"Repo for Orleans - Distributed Actor Model","fork":true,"url":"https://api.github.com/repos/jason-bragg/orleans","forks_url":"https://api.github.com/repos/jason-bragg/orleans/forks","keys_url":"https://api.github.com/repos/jason-bragg/orleans/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jason-bragg/orleans/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jason-bragg/orleans/teams","hooks_url":"https://api.github.com/repos/jason-bragg/orleans/hooks","issue_events_url":"https://api.github.com/repos/jason-bragg/orleans/issues/events{/number}","events_url":"https://api.github.com/repos/jason-bragg/orleans/events","assignees_url":"https://api.github.com/repos/jason-bragg/orleans/assignees{/user}","branches_url":"https://api.github.com/repos/jason-bragg/orleans/branches{/branch}","tags_url":"https://api.github.com/repos/jason-bragg/orleans/tags","blobs_url":"https://api.github.com/repos/jason-bragg/orleans/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jason-bragg/orleans/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jason-bragg/orleans/git/refs{/sha}","trees_url":"https://api.github.com/repos/jason-bragg/orleans/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jason-bragg/orleans/statuses/{sha}","languages_url":"https://api.github.com/repos/jason-bragg/orleans/languages","stargazers_url":"https://api.github.com/repos/jason-bragg/orleans/stargazers","contributors_url":"https://api.github.com/repos/jason-bragg/orleans/contributors","subscribers_url":"https://api.github.com/repos/jason-bragg/orleans/subscribers","subscription_url":"https://api.github.com/repos/jason-bragg/orleans/subscription","commits_url":"https://api.github.com/repos/jason-bragg/orleans/commits{/sha}","git_commits_url":"https://api.github.com/repos/jason-bragg/orleans/git/commits{/sha}","comments_url":"https://api.github.com/repos/jason-bragg/orleans/comments{/number}","issue_comment_url":"https://api.github.com/repos/jason-bragg/orleans/issues/comments{/number}","contents_url":"https://api.github.com/repos/jason-bragg/orleans/contents/{+path}","compare_url":"https://api.github.com/repos/jason-bragg/orleans/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jason-bragg/orleans/merges","archive_url":"https://api.github.com/repos/jason-bragg/orleans/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jason-bragg/orleans/downloads","issues_url":"https://api.github.com/repos/jason-bragg/orleans/issues{/number}","pulls_url":"https://api.github.com/repos/jason-bragg/orleans/pulls{/number}","milestones_url":"https://api.github.com/repos/jason-bragg/orleans/milestones{/number}","notifications_url":"https://api.github.com/repos/jason-bragg/orleans/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jason-bragg/orleans/labels{/name}","releases_url":"https://api.github.com/repos/jason-bragg/orleans/releases{/id}","deployments_url":"https://api.github.com/repos/jason-bragg/orleans/deployments","created_at":"2015-01-23T23:54:23Z","updated_at":"2017-08-19T06:29:56Z","pushed_at":"2018-02-15T02:41:40Z","git_url":"git://github.com/jason-bragg/orleans.git","ssh_url":"git@github.com:jason-bragg/orleans.git","clone_url":"https://github.com/jason-bragg/orleans.git","svn_url":"https://github.com/jason-bragg/orleans","homepage":"","size":45042,"stargazers_count":1,"watchers_count":1,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":0,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"26af46162c1c85faff2b9e755f46ddf85229f60a","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":28232663,"name":"orleans","full_name":"dotnet/orleans","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/orleans","description":"Orleans - Distributed Virtual Actor Model","fork":false,"url":"https://api.github.com/repos/dotnet/orleans","forks_url":"https://api.github.com/repos/dotnet/orleans/forks","keys_url":"https://api.github.com/repos/dotnet/orleans/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/orleans/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/orleans/teams","hooks_url":"https://api.github.com/repos/dotnet/orleans/hooks","issue_events_url":"https://api.github.com/repos/dotnet/orleans/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/orleans/events","assignees_url":"https://api.github.com/repos/dotnet/orleans/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/orleans/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/orleans/tags","blobs_url":"https://api.github.com/repos/dotnet/orleans/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/orleans/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/orleans/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/orleans/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/orleans/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/orleans/languages","stargazers_url":"https://api.github.com/repos/dotnet/orleans/stargazers","contributors_url":"https://api.github.com/repos/dotnet/orleans/contributors","subscribers_url":"https://api.github.com/repos/dotnet/orleans/subscribers","subscription_url":"https://api.github.com/repos/dotnet/orleans/subscription","commits_url":"https://api.github.com/repos/dotnet/orleans/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/orleans/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/orleans/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/orleans/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/orleans/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/orleans/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/orleans/merges","archive_url":"https://api.github.com/repos/dotnet/orleans/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/orleans/downloads","issues_url":"https://api.github.com/repos/dotnet/orleans/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/orleans/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/orleans/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/orleans/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/orleans/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/orleans/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/orleans/deployments","created_at":"2014-12-19T14:32:50Z","updated_at":"2018-02-15T10:24:37Z","pushed_at":"2018-02-15T06:37:12Z","git_url":"git://github.com/dotnet/orleans.git","ssh_url":"git@github.com:dotnet/orleans.git","clone_url":"https://github.com/dotnet/orleans.git","svn_url":"https://github.com/dotnet/orleans","homepage":"http://dotnet.github.io/orleans","size":45077,"stargazers_count":3561,"watchers_count":3561,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":877,"mirror_url":null,"archived":false,"open_issues_count":318,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":877,"open_issues":318,"watchers":3561,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/4042"},"html":{"href":"https://github.com/dotnet/orleans/pull/4042"},"issue":{"href":"https://api.github.com/repos/dotnet/orleans/issues/4042"},"comments":{"href":"https://api.github.com/repos/dotnet/orleans/issues/4042/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/4042/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/orleans/pulls/4042/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/orleans/statuses/2d99bd110f5b3093d2df8ce65d30aa1d7ee3dbfe"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"galvesribeiro"}}