{"action":"opened","number":505,"pull_request":{"url":"https://api.github.com/repos/EventStore/EventStore/pulls/505","id":37095662,"html_url":"https://github.com/EventStore/EventStore/pull/505","diff_url":"https://github.com/EventStore/EventStore/pull/505.diff","patch_url":"https://github.com/EventStore/EventStore/pull/505.patch","issue_url":"https://api.github.com/repos/EventStore/EventStore/issues/505","number":505,"state":"open","locked":false,"title":"Make the RequestManagementService thread safe","user":{"login":"lscpike","id":7010027,"avatar_url":"https://avatars.githubusercontent.com/u/7010027?v=3","gravatar_id":"","url":"https://api.github.com/users/lscpike","html_url":"https://github.com/lscpike","followers_url":"https://api.github.com/users/lscpike/followers","following_url":"https://api.github.com/users/lscpike/following{/other_user}","gists_url":"https://api.github.com/users/lscpike/gists{/gist_id}","starred_url":"https://api.github.com/users/lscpike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lscpike/subscriptions","organizations_url":"https://api.github.com/users/lscpike/orgs","repos_url":"https://api.github.com/users/lscpike/repos","events_url":"https://api.github.com/users/lscpike/events{/privacy}","received_events_url":"https://api.github.com/users/lscpike/received_events","type":"User","site_admin":false},"body":"The RequestManagementService subscribes to the MainBus which can dispatch from many threads in parallel. The class uses a Dictionary which is not thread safe.\r\n\r\nI've changed to use a ConcurrentDictionary. I'm not sure of the performance implications.","created_at":"2015-06-06T19:48:04Z","updated_at":"2015-06-06T19:48:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"14492a40f16bce537692823896f8b8db4369c158","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/EventStore/EventStore/pulls/505/commits","review_comments_url":"https://api.github.com/repos/EventStore/EventStore/pulls/505/comments","review_comment_url":"https://api.github.com/repos/EventStore/EventStore/pulls/comments{/number}","comments_url":"https://api.github.com/repos/EventStore/EventStore/issues/505/comments","statuses_url":"https://api.github.com/repos/EventStore/EventStore/statuses/23aa1d460048f8f861e7a85e1ecaf0c03cdcdda8","head":{"label":"lscpike:requestmanaagementthreading","ref":"requestmanaagementthreading","sha":"23aa1d460048f8f861e7a85e1ecaf0c03cdcdda8","user":{"login":"lscpike","id":7010027,"avatar_url":"https://avatars.githubusercontent.com/u/7010027?v=3","gravatar_id":"","url":"https://api.github.com/users/lscpike","html_url":"https://github.com/lscpike","followers_url":"https://api.github.com/users/lscpike/followers","following_url":"https://api.github.com/users/lscpike/following{/other_user}","gists_url":"https://api.github.com/users/lscpike/gists{/gist_id}","starred_url":"https://api.github.com/users/lscpike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lscpike/subscriptions","organizations_url":"https://api.github.com/users/lscpike/orgs","repos_url":"https://api.github.com/users/lscpike/repos","events_url":"https://api.github.com/users/lscpike/events{/privacy}","received_events_url":"https://api.github.com/users/lscpike/received_events","type":"User","site_admin":false},"repo":{"id":34144362,"name":"EventStore","full_name":"lscpike/EventStore","owner":{"login":"lscpike","id":7010027,"avatar_url":"https://avatars.githubusercontent.com/u/7010027?v=3","gravatar_id":"","url":"https://api.github.com/users/lscpike","html_url":"https://github.com/lscpike","followers_url":"https://api.github.com/users/lscpike/followers","following_url":"https://api.github.com/users/lscpike/following{/other_user}","gists_url":"https://api.github.com/users/lscpike/gists{/gist_id}","starred_url":"https://api.github.com/users/lscpike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lscpike/subscriptions","organizations_url":"https://api.github.com/users/lscpike/orgs","repos_url":"https://api.github.com/users/lscpike/repos","events_url":"https://api.github.com/users/lscpike/events{/privacy}","received_events_url":"https://api.github.com/users/lscpike/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lscpike/EventStore","description":"The open-source, functional database with Complex Event Processing in JavaScript.","fork":true,"url":"https://api.github.com/repos/lscpike/EventStore","forks_url":"https://api.github.com/repos/lscpike/EventStore/forks","keys_url":"https://api.github.com/repos/lscpike/EventStore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lscpike/EventStore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lscpike/EventStore/teams","hooks_url":"https://api.github.com/repos/lscpike/EventStore/hooks","issue_events_url":"https://api.github.com/repos/lscpike/EventStore/issues/events{/number}","events_url":"https://api.github.com/repos/lscpike/EventStore/events","assignees_url":"https://api.github.com/repos/lscpike/EventStore/assignees{/user}","branches_url":"https://api.github.com/repos/lscpike/EventStore/branches{/branch}","tags_url":"https://api.github.com/repos/lscpike/EventStore/tags","blobs_url":"https://api.github.com/repos/lscpike/EventStore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lscpike/EventStore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lscpike/EventStore/git/refs{/sha}","trees_url":"https://api.github.com/repos/lscpike/EventStore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lscpike/EventStore/statuses/{sha}","languages_url":"https://api.github.com/repos/lscpike/EventStore/languages","stargazers_url":"https://api.github.com/repos/lscpike/EventStore/stargazers","contributors_url":"https://api.github.com/repos/lscpike/EventStore/contributors","subscribers_url":"https://api.github.com/repos/lscpike/EventStore/subscribers","subscription_url":"https://api.github.com/repos/lscpike/EventStore/subscription","commits_url":"https://api.github.com/repos/lscpike/EventStore/commits{/sha}","git_commits_url":"https://api.github.com/repos/lscpike/EventStore/git/commits{/sha}","comments_url":"https://api.github.com/repos/lscpike/EventStore/comments{/number}","issue_comment_url":"https://api.github.com/repos/lscpike/EventStore/issues/comments{/number}","contents_url":"https://api.github.com/repos/lscpike/EventStore/contents/{+path}","compare_url":"https://api.github.com/repos/lscpike/EventStore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lscpike/EventStore/merges","archive_url":"https://api.github.com/repos/lscpike/EventStore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lscpike/EventStore/downloads","issues_url":"https://api.github.com/repos/lscpike/EventStore/issues{/number}","pulls_url":"https://api.github.com/repos/lscpike/EventStore/pulls{/number}","milestones_url":"https://api.github.com/repos/lscpike/EventStore/milestones{/number}","notifications_url":"https://api.github.com/repos/lscpike/EventStore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lscpike/EventStore/labels{/name}","releases_url":"https://api.github.com/repos/lscpike/EventStore/releases{/id}","created_at":"2015-04-17T23:15:48Z","updated_at":"2015-04-19T19:54:04Z","pushed_at":"2015-06-06T19:46:17Z","git_url":"git://github.com/lscpike/EventStore.git","ssh_url":"git@github.com:lscpike/EventStore.git","clone_url":"https://github.com/lscpike/EventStore.git","svn_url":"https://github.com/lscpike/EventStore","homepage":"https://geteventstore.com","size":118333,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"dev"}},"base":{"label":"EventStore:dev","ref":"dev","sha":"68b7c67656d37688fe972403f8221a6cf9d3ae22","user":{"login":"EventStore","id":1628864,"avatar_url":"https://avatars.githubusercontent.com/u/1628864?v=3","gravatar_id":"","url":"https://api.github.com/users/EventStore","html_url":"https://github.com/EventStore","followers_url":"https://api.github.com/users/EventStore/followers","following_url":"https://api.github.com/users/EventStore/following{/other_user}","gists_url":"https://api.github.com/users/EventStore/gists{/gist_id}","starred_url":"https://api.github.com/users/EventStore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EventStore/subscriptions","organizations_url":"https://api.github.com/users/EventStore/orgs","repos_url":"https://api.github.com/users/EventStore/repos","events_url":"https://api.github.com/users/EventStore/events{/privacy}","received_events_url":"https://api.github.com/users/EventStore/received_events","type":"Organization","site_admin":false},"repo":{"id":5844474,"name":"EventStore","full_name":"EventStore/EventStore","owner":{"login":"EventStore","id":1628864,"avatar_url":"https://avatars.githubusercontent.com/u/1628864?v=3","gravatar_id":"","url":"https://api.github.com/users/EventStore","html_url":"https://github.com/EventStore","followers_url":"https://api.github.com/users/EventStore/followers","following_url":"https://api.github.com/users/EventStore/following{/other_user}","gists_url":"https://api.github.com/users/EventStore/gists{/gist_id}","starred_url":"https://api.github.com/users/EventStore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EventStore/subscriptions","organizations_url":"https://api.github.com/users/EventStore/orgs","repos_url":"https://api.github.com/users/EventStore/repos","events_url":"https://api.github.com/users/EventStore/events{/privacy}","received_events_url":"https://api.github.com/users/EventStore/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/EventStore/EventStore","description":"The open-source, functional database with Complex Event Processing in JavaScript.","fork":false,"url":"https://api.github.com/repos/EventStore/EventStore","forks_url":"https://api.github.com/repos/EventStore/EventStore/forks","keys_url":"https://api.github.com/repos/EventStore/EventStore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/EventStore/EventStore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/EventStore/EventStore/teams","hooks_url":"https://api.github.com/repos/EventStore/EventStore/hooks","issue_events_url":"https://api.github.com/repos/EventStore/EventStore/issues/events{/number}","events_url":"https://api.github.com/repos/EventStore/EventStore/events","assignees_url":"https://api.github.com/repos/EventStore/EventStore/assignees{/user}","branches_url":"https://api.github.com/repos/EventStore/EventStore/branches{/branch}","tags_url":"https://api.github.com/repos/EventStore/EventStore/tags","blobs_url":"https://api.github.com/repos/EventStore/EventStore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/EventStore/EventStore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/EventStore/EventStore/git/refs{/sha}","trees_url":"https://api.github.com/repos/EventStore/EventStore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/EventStore/EventStore/statuses/{sha}","languages_url":"https://api.github.com/repos/EventStore/EventStore/languages","stargazers_url":"https://api.github.com/repos/EventStore/EventStore/stargazers","contributors_url":"https://api.github.com/repos/EventStore/EventStore/contributors","subscribers_url":"https://api.github.com/repos/EventStore/EventStore/subscribers","subscription_url":"https://api.github.com/repos/EventStore/EventStore/subscription","commits_url":"https://api.github.com/repos/EventStore/EventStore/commits{/sha}","git_commits_url":"https://api.github.com/repos/EventStore/EventStore/git/commits{/sha}","comments_url":"https://api.github.com/repos/EventStore/EventStore/comments{/number}","issue_comment_url":"https://api.github.com/repos/EventStore/EventStore/issues/comments{/number}","contents_url":"https://api.github.com/repos/EventStore/EventStore/contents/{+path}","compare_url":"https://api.github.com/repos/EventStore/EventStore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/EventStore/EventStore/merges","archive_url":"https://api.github.com/repos/EventStore/EventStore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/EventStore/EventStore/downloads","issues_url":"https://api.github.com/repos/EventStore/EventStore/issues{/number}","pulls_url":"https://api.github.com/repos/EventStore/EventStore/pulls{/number}","milestones_url":"https://api.github.com/repos/EventStore/EventStore/milestones{/number}","notifications_url":"https://api.github.com/repos/EventStore/EventStore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/EventStore/EventStore/labels{/name}","releases_url":"https://api.github.com/repos/EventStore/EventStore/releases{/id}","created_at":"2012-09-17T17:22:49Z","updated_at":"2015-06-05T05:39:31Z","pushed_at":"2015-06-06T19:48:04Z","git_url":"git://github.com/EventStore/EventStore.git","ssh_url":"git@github.com:EventStore/EventStore.git","clone_url":"https://github.com/EventStore/EventStore.git","svn_url":"https://github.com/EventStore/EventStore","homepage":"https://geteventstore.com","size":148173,"stargazers_count":1078,"watchers_count":1078,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":226,"mirror_url":null,"open_issues_count":72,"forks":226,"open_issues":72,"watchers":1078,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/EventStore/EventStore/pulls/505"},"html":{"href":"https://github.com/EventStore/EventStore/pull/505"},"issue":{"href":"https://api.github.com/repos/EventStore/EventStore/issues/505"},"comments":{"href":"https://api.github.com/repos/EventStore/EventStore/issues/505/comments"},"review_comments":{"href":"https://api.github.com/repos/EventStore/EventStore/pulls/505/comments"},"review_comment":{"href":"https://api.github.com/repos/EventStore/EventStore/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/EventStore/EventStore/pulls/505/commits"},"statuses":{"href":"https://api.github.com/repos/EventStore/EventStore/statuses/23aa1d460048f8f861e7a85e1ecaf0c03cdcdda8"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":17,"deletions":7,"changed_files":1}}