{"action":"closed","number":36,"pull_request":{"url":"https://api.github.com/repos/mumrah/kafka-python/pulls/36","id":7251068,"html_url":"https://github.com/mumrah/kafka-python/pull/36","diff_url":"https://github.com/mumrah/kafka-python/pull/36.diff","patch_url":"https://github.com/mumrah/kafka-python/pull/36.patch","issue_url":"https://api.github.com/repos/mumrah/kafka-python/issues/36","number":36,"state":"closed","locked":false,"title":"Avoid multi-threaded auto-commit","user":{"login":"mahendra","id":115988,"avatar_url":"https://avatars.githubusercontent.com/u/115988?v=3","gravatar_id":"","url":"https://api.github.com/users/mahendra","html_url":"https://github.com/mahendra","followers_url":"https://api.github.com/users/mahendra/followers","following_url":"https://api.github.com/users/mahendra/following{/other_user}","gists_url":"https://api.github.com/users/mahendra/gists{/gist_id}","starred_url":"https://api.github.com/users/mahendra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mahendra/subscriptions","organizations_url":"https://api.github.com/users/mahendra/orgs","repos_url":"https://api.github.com/users/mahendra/repos","events_url":"https://api.github.com/users/mahendra/events{/privacy}","received_events_url":"https://api.github.com/users/mahendra/received_events","type":"User","site_admin":false},"body":"Note: This is done on top of #33 \r\n\r\nThis is done using shared memory objects provided by multiprocessing.\r\n\r\nDesign\r\n* We start a commit process which waits on a <tt>multiprocessing.Queue</tt> with <tt>timeout = auto_commit_every_t</tt>\r\n* In the main proc, when <tt>_auto_commit</tt> triggers a commit, we send a message on the queue\r\n* The commit proc wakes up and does a commit\r\n* If timeout is not None, then the commit proc will wake up after the specified timeout and to the commit.\r\n* Data is shared between both procs using shared memory.\r\n* We avoid the use of Locks completely\r\n\r\nAlso fix a bug in auto-commit for - auto_commit_every_n\r\n","created_at":"2013-07-30T02:58:02Z","updated_at":"2015-06-12T07:43:50Z","closed_at":"2015-06-12T07:43:50Z","merged_at":null,"merge_commit_sha":"35b8f6d7e1163d082051fe9500db5b3af69dc2ab","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mumrah/kafka-python/pulls/36/commits","review_comments_url":"https://api.github.com/repos/mumrah/kafka-python/pulls/36/comments","review_comment_url":"https://api.github.com/repos/mumrah/kafka-python/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mumrah/kafka-python/issues/36/comments","statuses_url":"https://api.github.com/repos/mumrah/kafka-python/statuses/5a77a7199047e6387bd6b05c7cd01e2f7eda28ab","head":{"label":"mahendra:mpcommit","ref":"mpcommit","sha":"5a77a7199047e6387bd6b05c7cd01e2f7eda28ab","user":{"login":"mahendra","id":115988,"avatar_url":"https://avatars.githubusercontent.com/u/115988?v=3","gravatar_id":"","url":"https://api.github.com/users/mahendra","html_url":"https://github.com/mahendra","followers_url":"https://api.github.com/users/mahendra/followers","following_url":"https://api.github.com/users/mahendra/following{/other_user}","gists_url":"https://api.github.com/users/mahendra/gists{/gist_id}","starred_url":"https://api.github.com/users/mahendra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mahendra/subscriptions","organizations_url":"https://api.github.com/users/mahendra/orgs","repos_url":"https://api.github.com/users/mahendra/repos","events_url":"https://api.github.com/users/mahendra/events{/privacy}","received_events_url":"https://api.github.com/users/mahendra/received_events","type":"User","site_admin":false},"repo":{"id":10265004,"name":"kafka-python","full_name":"mahendra/kafka-python","owner":{"login":"mahendra","id":115988,"avatar_url":"https://avatars.githubusercontent.com/u/115988?v=3","gravatar_id":"","url":"https://api.github.com/users/mahendra","html_url":"https://github.com/mahendra","followers_url":"https://api.github.com/users/mahendra/followers","following_url":"https://api.github.com/users/mahendra/following{/other_user}","gists_url":"https://api.github.com/users/mahendra/gists{/gist_id}","starred_url":"https://api.github.com/users/mahendra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mahendra/subscriptions","organizations_url":"https://api.github.com/users/mahendra/orgs","repos_url":"https://api.github.com/users/mahendra/repos","events_url":"https://api.github.com/users/mahendra/events{/privacy}","received_events_url":"https://api.github.com/users/mahendra/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mahendra/kafka-python","description":"Kafka protocol support in Python","fork":true,"url":"https://api.github.com/repos/mahendra/kafka-python","forks_url":"https://api.github.com/repos/mahendra/kafka-python/forks","keys_url":"https://api.github.com/repos/mahendra/kafka-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mahendra/kafka-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mahendra/kafka-python/teams","hooks_url":"https://api.github.com/repos/mahendra/kafka-python/hooks","issue_events_url":"https://api.github.com/repos/mahendra/kafka-python/issues/events{/number}","events_url":"https://api.github.com/repos/mahendra/kafka-python/events","assignees_url":"https://api.github.com/repos/mahendra/kafka-python/assignees{/user}","branches_url":"https://api.github.com/repos/mahendra/kafka-python/branches{/branch}","tags_url":"https://api.github.com/repos/mahendra/kafka-python/tags","blobs_url":"https://api.github.com/repos/mahendra/kafka-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mahendra/kafka-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mahendra/kafka-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/mahendra/kafka-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mahendra/kafka-python/statuses/{sha}","languages_url":"https://api.github.com/repos/mahendra/kafka-python/languages","stargazers_url":"https://api.github.com/repos/mahendra/kafka-python/stargazers","contributors_url":"https://api.github.com/repos/mahendra/kafka-python/contributors","subscribers_url":"https://api.github.com/repos/mahendra/kafka-python/subscribers","subscription_url":"https://api.github.com/repos/mahendra/kafka-python/subscription","commits_url":"https://api.github.com/repos/mahendra/kafka-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/mahendra/kafka-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/mahendra/kafka-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/mahendra/kafka-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/mahendra/kafka-python/contents/{+path}","compare_url":"https://api.github.com/repos/mahendra/kafka-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mahendra/kafka-python/merges","archive_url":"https://api.github.com/repos/mahendra/kafka-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mahendra/kafka-python/downloads","issues_url":"https://api.github.com/repos/mahendra/kafka-python/issues{/number}","pulls_url":"https://api.github.com/repos/mahendra/kafka-python/pulls{/number}","milestones_url":"https://api.github.com/repos/mahendra/kafka-python/milestones{/number}","notifications_url":"https://api.github.com/repos/mahendra/kafka-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mahendra/kafka-python/labels{/name}","releases_url":"https://api.github.com/repos/mahendra/kafka-python/releases{/id}","created_at":"2013-05-24T11:24:02Z","updated_at":"2014-01-15T04:09:08Z","pushed_at":"2013-10-09T11:38:35Z","git_url":"git://github.com/mahendra/kafka-python.git","ssh_url":"git@github.com:mahendra/kafka-python.git","clone_url":"https://github.com/mahendra/kafka-python.git","svn_url":"https://github.com/mahendra/kafka-python","homepage":null,"size":713,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"mumrah:master","ref":"master","sha":"87bea900df341ddc2431569bdc329d069b6c5c61","user":{"login":"mumrah","id":55116,"avatar_url":"https://avatars.githubusercontent.com/u/55116?v=3","gravatar_id":"","url":"https://api.github.com/users/mumrah","html_url":"https://github.com/mumrah","followers_url":"https://api.github.com/users/mumrah/followers","following_url":"https://api.github.com/users/mumrah/following{/other_user}","gists_url":"https://api.github.com/users/mumrah/gists{/gist_id}","starred_url":"https://api.github.com/users/mumrah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mumrah/subscriptions","organizations_url":"https://api.github.com/users/mumrah/orgs","repos_url":"https://api.github.com/users/mumrah/repos","events_url":"https://api.github.com/users/mumrah/events{/privacy}","received_events_url":"https://api.github.com/users/mumrah/received_events","type":"User","site_admin":false},"repo":{"id":5934517,"name":"kafka-python","full_name":"mumrah/kafka-python","owner":{"login":"mumrah","id":55116,"avatar_url":"https://avatars.githubusercontent.com/u/55116?v=3","gravatar_id":"","url":"https://api.github.com/users/mumrah","html_url":"https://github.com/mumrah","followers_url":"https://api.github.com/users/mumrah/followers","following_url":"https://api.github.com/users/mumrah/following{/other_user}","gists_url":"https://api.github.com/users/mumrah/gists{/gist_id}","starred_url":"https://api.github.com/users/mumrah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mumrah/subscriptions","organizations_url":"https://api.github.com/users/mumrah/orgs","repos_url":"https://api.github.com/users/mumrah/repos","events_url":"https://api.github.com/users/mumrah/events{/privacy}","received_events_url":"https://api.github.com/users/mumrah/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mumrah/kafka-python","description":"Python client for Apache Kafka","fork":false,"url":"https://api.github.com/repos/mumrah/kafka-python","forks_url":"https://api.github.com/repos/mumrah/kafka-python/forks","keys_url":"https://api.github.com/repos/mumrah/kafka-python/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mumrah/kafka-python/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mumrah/kafka-python/teams","hooks_url":"https://api.github.com/repos/mumrah/kafka-python/hooks","issue_events_url":"https://api.github.com/repos/mumrah/kafka-python/issues/events{/number}","events_url":"https://api.github.com/repos/mumrah/kafka-python/events","assignees_url":"https://api.github.com/repos/mumrah/kafka-python/assignees{/user}","branches_url":"https://api.github.com/repos/mumrah/kafka-python/branches{/branch}","tags_url":"https://api.github.com/repos/mumrah/kafka-python/tags","blobs_url":"https://api.github.com/repos/mumrah/kafka-python/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mumrah/kafka-python/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mumrah/kafka-python/git/refs{/sha}","trees_url":"https://api.github.com/repos/mumrah/kafka-python/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mumrah/kafka-python/statuses/{sha}","languages_url":"https://api.github.com/repos/mumrah/kafka-python/languages","stargazers_url":"https://api.github.com/repos/mumrah/kafka-python/stargazers","contributors_url":"https://api.github.com/repos/mumrah/kafka-python/contributors","subscribers_url":"https://api.github.com/repos/mumrah/kafka-python/subscribers","subscription_url":"https://api.github.com/repos/mumrah/kafka-python/subscription","commits_url":"https://api.github.com/repos/mumrah/kafka-python/commits{/sha}","git_commits_url":"https://api.github.com/repos/mumrah/kafka-python/git/commits{/sha}","comments_url":"https://api.github.com/repos/mumrah/kafka-python/comments{/number}","issue_comment_url":"https://api.github.com/repos/mumrah/kafka-python/issues/comments{/number}","contents_url":"https://api.github.com/repos/mumrah/kafka-python/contents/{+path}","compare_url":"https://api.github.com/repos/mumrah/kafka-python/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mumrah/kafka-python/merges","archive_url":"https://api.github.com/repos/mumrah/kafka-python/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mumrah/kafka-python/downloads","issues_url":"https://api.github.com/repos/mumrah/kafka-python/issues{/number}","pulls_url":"https://api.github.com/repos/mumrah/kafka-python/pulls{/number}","milestones_url":"https://api.github.com/repos/mumrah/kafka-python/milestones{/number}","notifications_url":"https://api.github.com/repos/mumrah/kafka-python/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mumrah/kafka-python/labels{/name}","releases_url":"https://api.github.com/repos/mumrah/kafka-python/releases{/id}","created_at":"2012-09-24T13:00:26Z","updated_at":"2015-06-12T05:44:54Z","pushed_at":"2015-06-12T06:28:42Z","git_url":"git://github.com/mumrah/kafka-python.git","ssh_url":"git@github.com:mumrah/kafka-python.git","clone_url":"https://github.com/mumrah/kafka-python.git","svn_url":"https://github.com/mumrah/kafka-python","homepage":"","size":3351,"stargazers_count":516,"watchers_count":516,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":241,"mirror_url":null,"open_issues_count":47,"forks":241,"open_issues":47,"watchers":516,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mumrah/kafka-python/pulls/36"},"html":{"href":"https://github.com/mumrah/kafka-python/pull/36"},"issue":{"href":"https://api.github.com/repos/mumrah/kafka-python/issues/36"},"comments":{"href":"https://api.github.com/repos/mumrah/kafka-python/issues/36/comments"},"review_comments":{"href":"https://api.github.com/repos/mumrah/kafka-python/pulls/36/comments"},"review_comment":{"href":"https://api.github.com/repos/mumrah/kafka-python/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mumrah/kafka-python/pulls/36/commits"},"statuses":{"href":"https://api.github.com/repos/mumrah/kafka-python/statuses/5a77a7199047e6387bd6b05c7cd01e2f7eda28ab"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":6,"review_comments":0,"commits":12,"additions":142,"deletions":102,"changed_files":3}}