{"action":"created","comment":{"url":"https://api.github.com/repos/allegro/hermes/pulls/comments/71119766","id":71119766,"diff_hunk":"@@ -124,7 +124,7 @@\n     CONSUMER_OFFSET_COMMIT_QUEUE_ALERT_MINIMAL_IDLE_PERIOD(\"consumer.offset.commit.queue.alert.minimal.idle.period\", 3600),\n     CONSUMER_OFFSET_COMMIT_QUEUE_ALERT_SIZE(\"consumer.offset.commit.queue.alert.size\", 20_000),\n     CONSUMER_HEALTH_CHECK_PORT(\"consumer.status.health.port\", 8000),\n-    CONSUMER_WORKLOAD_ALGORITHM(\"consumer.workload.algorithm\", \"legacy.mirror\"),\n+    CONSUMER_WORKLOAD_ALGORITHM(\"consumer.workload.algorithm\", \"selective\"),","path":"hermes-common/src/main/java/pl/allegro/tech/hermes/common/config/Configs.java","position":14,"original_position":14,"commit_id":"a6611680a545b451d43f45422f98b9a0c35df399","original_commit_id":"a6611680a545b451d43f45422f98b9a0c35df399","user":{"login":"adamdubiel","id":5269406,"avatar_url":"https://avatars.githubusercontent.com/u/5269406?v=3","gravatar_id":"","url":"https://api.github.com/users/adamdubiel","html_url":"https://github.com/adamdubiel","followers_url":"https://api.github.com/users/adamdubiel/followers","following_url":"https://api.github.com/users/adamdubiel/following{/other_user}","gists_url":"https://api.github.com/users/adamdubiel/gists{/gist_id}","starred_url":"https://api.github.com/users/adamdubiel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamdubiel/subscriptions","organizations_url":"https://api.github.com/users/adamdubiel/orgs","repos_url":"https://api.github.com/users/adamdubiel/repos","events_url":"https://api.github.com/users/adamdubiel/events{/privacy}","received_events_url":"https://api.github.com/users/adamdubiel/received_events","type":"User","site_admin":false},"body":"i rolled back this change, but i will change our integration test config to use `selective` now","created_at":"2016-07-18T09:28:46Z","updated_at":"2016-07-18T09:28:46Z","html_url":"https://github.com/allegro/hermes/pull/505#discussion_r71119766","pull_request_url":"https://api.github.com/repos/allegro/hermes/pulls/505","_links":{"self":{"href":"https://api.github.com/repos/allegro/hermes/pulls/comments/71119766"},"html":{"href":"https://github.com/allegro/hermes/pull/505#discussion_r71119766"},"pull_request":{"href":"https://api.github.com/repos/allegro/hermes/pulls/505"}}},"pull_request":{"url":"https://api.github.com/repos/allegro/hermes/pulls/505","id":73728435,"html_url":"https://github.com/allegro/hermes/pull/505","diff_url":"https://github.com/allegro/hermes/pull/505.diff","patch_url":"https://github.com/allegro/hermes/pull/505.patch","issue_url":"https://api.github.com/repos/allegro/hermes/issues/505","number":505,"state":"open","locked":false,"title":"467 assignment executor blocked","user":{"login":"adamdubiel","id":5269406,"avatar_url":"https://avatars.githubusercontent.com/u/5269406?v=3","gravatar_id":"","url":"https://api.github.com/users/adamdubiel","html_url":"https://github.com/adamdubiel","followers_url":"https://api.github.com/users/adamdubiel/followers","following_url":"https://api.github.com/users/adamdubiel/following{/other_user}","gists_url":"https://api.github.com/users/adamdubiel/gists{/gist_id}","starred_url":"https://api.github.com/users/adamdubiel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamdubiel/subscriptions","organizations_url":"https://api.github.com/users/adamdubiel/orgs","repos_url":"https://api.github.com/users/adamdubiel/repos","events_url":"https://api.github.com/users/adamdubiel/events{/privacy}","received_events_url":"https://api.github.com/users/adamdubiel/received_events","type":"User","site_admin":false},"body":"Revamped version of consumers - less locks & blocks, more queues and signals.\r\n\r\nIn general it is the idea of @wojtkiewicz - making Consumers more like supervised processes with signal-based communication. The heart of whole design are `NonblockingConsumersSupervisor`, `ConsumerProcessSupervisor` and `ConsumerProcess`.\r\n\r\n`ConsumerProcessSupervisor` manages all `ConsumerProcess` processes. Each `ConsumerProcess` is single thread running `Consumer` and all changes (like stop/start/retransmit) take place in this thread. This makes `Consumer` single threaded (in simple cases). Likewise, `ConsumerProcessSupervisor` is for the most part single threaded, except from signal queue. `ConsumerProcessSupervisor` also does some simple health checking. Health check is a simple timestamp regenerated each time signals are processed by `ConsumerProcess`. If `ConsumerProcess` is unable to respond to signals, we assume it got blocked and it gets restarted.\r\n\r\nThose changes forced two other: offset commits and Zookeeper caches.\r\n\r\nOffset commits are no longer pulled from Consumers, as it was before. When Consumer reads the message, it pushes information about inflight message to inflight offsets queue in `OffsetQueue` class. Once it is ready to commit, the info is pushed to ready-to-commit queue in `OffsetQueue`. The algorithm which consumes this data and does the commits is located in `OffsetCommitter` class.\r\n\r\nLast change are Zookeeper caches. Previous implementation made it impossible to listen to both Subscription and Topic events. New `HierarchicalCache` structure makes it easy. Also new abstraction - `InternalNotificationBus` was introduced, which can be used instead in multiple places instead of direct cache traversal.\r\n\r\n*I will do squash & merge via github button when it is ready to merge*","created_at":"2016-06-14T12:12:19Z","updated_at":"2016-07-18T09:28:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"711bfd93d2d9f74a26b5a3eefa22df669a8118af","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/allegro/hermes/milestones/18","html_url":"https://github.com/allegro/hermes/milestones/0.8.10","labels_url":"https://api.github.com/repos/allegro/hermes/milestones/18/labels","id":1867552,"number":18,"title":"0.8.10","description":"","creator":{"login":"adamdubiel","id":5269406,"avatar_url":"https://avatars.githubusercontent.com/u/5269406?v=3","gravatar_id":"","url":"https://api.github.com/users/adamdubiel","html_url":"https://github.com/adamdubiel","followers_url":"https://api.github.com/users/adamdubiel/followers","following_url":"https://api.github.com/users/adamdubiel/following{/other_user}","gists_url":"https://api.github.com/users/adamdubiel/gists{/gist_id}","starred_url":"https://api.github.com/users/adamdubiel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamdubiel/subscriptions","organizations_url":"https://api.github.com/users/adamdubiel/orgs","repos_url":"https://api.github.com/users/adamdubiel/repos","events_url":"https://api.github.com/users/adamdubiel/events{/privacy}","received_events_url":"https://api.github.com/users/adamdubiel/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":2,"state":"open","created_at":"2016-07-06T13:37:21Z","updated_at":"2016-07-17T19:31:33Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/allegro/hermes/pulls/505/commits","review_comments_url":"https://api.github.com/repos/allegro/hermes/pulls/505/comments","review_comment_url":"https://api.github.com/repos/allegro/hermes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/allegro/hermes/issues/505/comments","statuses_url":"https://api.github.com/repos/allegro/hermes/statuses/a6611680a545b451d43f45422f98b9a0c35df399","head":{"label":"allegro:467_assignment_executor_blocked","ref":"467_assignment_executor_blocked","sha":"a6611680a545b451d43f45422f98b9a0c35df399","user":{"login":"allegro","id":562236,"avatar_url":"https://avatars.githubusercontent.com/u/562236?v=3","gravatar_id":"","url":"https://api.github.com/users/allegro","html_url":"https://github.com/allegro","followers_url":"https://api.github.com/users/allegro/followers","following_url":"https://api.github.com/users/allegro/following{/other_user}","gists_url":"https://api.github.com/users/allegro/gists{/gist_id}","starred_url":"https://api.github.com/users/allegro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allegro/subscriptions","organizations_url":"https://api.github.com/users/allegro/orgs","repos_url":"https://api.github.com/users/allegro/repos","events_url":"https://api.github.com/users/allegro/events{/privacy}","received_events_url":"https://api.github.com/users/allegro/received_events","type":"Organization","site_admin":false},"repo":{"id":35662043,"name":"hermes","full_name":"allegro/hermes","owner":{"login":"allegro","id":562236,"avatar_url":"https://avatars.githubusercontent.com/u/562236?v=3","gravatar_id":"","url":"https://api.github.com/users/allegro","html_url":"https://github.com/allegro","followers_url":"https://api.github.com/users/allegro/followers","following_url":"https://api.github.com/users/allegro/following{/other_user}","gists_url":"https://api.github.com/users/allegro/gists{/gist_id}","starred_url":"https://api.github.com/users/allegro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allegro/subscriptions","organizations_url":"https://api.github.com/users/allegro/orgs","repos_url":"https://api.github.com/users/allegro/repos","events_url":"https://api.github.com/users/allegro/events{/privacy}","received_events_url":"https://api.github.com/users/allegro/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/allegro/hermes","description":"Fast and reliable message broker built on top of Kafka.","fork":false,"url":"https://api.github.com/repos/allegro/hermes","forks_url":"https://api.github.com/repos/allegro/hermes/forks","keys_url":"https://api.github.com/repos/allegro/hermes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/allegro/hermes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/allegro/hermes/teams","hooks_url":"https://api.github.com/repos/allegro/hermes/hooks","issue_events_url":"https://api.github.com/repos/allegro/hermes/issues/events{/number}","events_url":"https://api.github.com/repos/allegro/hermes/events","assignees_url":"https://api.github.com/repos/allegro/hermes/assignees{/user}","branches_url":"https://api.github.com/repos/allegro/hermes/branches{/branch}","tags_url":"https://api.github.com/repos/allegro/hermes/tags","blobs_url":"https://api.github.com/repos/allegro/hermes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/allegro/hermes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/allegro/hermes/git/refs{/sha}","trees_url":"https://api.github.com/repos/allegro/hermes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/allegro/hermes/statuses/{sha}","languages_url":"https://api.github.com/repos/allegro/hermes/languages","stargazers_url":"https://api.github.com/repos/allegro/hermes/stargazers","contributors_url":"https://api.github.com/repos/allegro/hermes/contributors","subscribers_url":"https://api.github.com/repos/allegro/hermes/subscribers","subscription_url":"https://api.github.com/repos/allegro/hermes/subscription","commits_url":"https://api.github.com/repos/allegro/hermes/commits{/sha}","git_commits_url":"https://api.github.com/repos/allegro/hermes/git/commits{/sha}","comments_url":"https://api.github.com/repos/allegro/hermes/comments{/number}","issue_comment_url":"https://api.github.com/repos/allegro/hermes/issues/comments{/number}","contents_url":"https://api.github.com/repos/allegro/hermes/contents/{+path}","compare_url":"https://api.github.com/repos/allegro/hermes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/allegro/hermes/merges","archive_url":"https://api.github.com/repos/allegro/hermes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/allegro/hermes/downloads","issues_url":"https://api.github.com/repos/allegro/hermes/issues{/number}","pulls_url":"https://api.github.com/repos/allegro/hermes/pulls{/number}","milestones_url":"https://api.github.com/repos/allegro/hermes/milestones{/number}","notifications_url":"https://api.github.com/repos/allegro/hermes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/allegro/hermes/labels{/name}","releases_url":"https://api.github.com/repos/allegro/hermes/releases{/id}","deployments_url":"https://api.github.com/repos/allegro/hermes/deployments","created_at":"2015-05-15T08:11:16Z","updated_at":"2016-07-13T02:11:24Z","pushed_at":"2016-07-18T09:22:48Z","git_url":"git://github.com/allegro/hermes.git","ssh_url":"git@github.com:allegro/hermes.git","clone_url":"https://github.com/allegro/hermes.git","svn_url":"https://github.com/allegro/hermes","homepage":"http://hermes.allegro.tech","size":5183,"stargazers_count":185,"watchers_count":185,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":35,"mirror_url":null,"open_issues_count":44,"forks":35,"open_issues":44,"watchers":185,"default_branch":"master"}},"base":{"label":"allegro:develop","ref":"develop","sha":"f40e9322d15aa4fac63ff50e0e40d89b2ee4b60f","user":{"login":"allegro","id":562236,"avatar_url":"https://avatars.githubusercontent.com/u/562236?v=3","gravatar_id":"","url":"https://api.github.com/users/allegro","html_url":"https://github.com/allegro","followers_url":"https://api.github.com/users/allegro/followers","following_url":"https://api.github.com/users/allegro/following{/other_user}","gists_url":"https://api.github.com/users/allegro/gists{/gist_id}","starred_url":"https://api.github.com/users/allegro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allegro/subscriptions","organizations_url":"https://api.github.com/users/allegro/orgs","repos_url":"https://api.github.com/users/allegro/repos","events_url":"https://api.github.com/users/allegro/events{/privacy}","received_events_url":"https://api.github.com/users/allegro/received_events","type":"Organization","site_admin":false},"repo":{"id":35662043,"name":"hermes","full_name":"allegro/hermes","owner":{"login":"allegro","id":562236,"avatar_url":"https://avatars.githubusercontent.com/u/562236?v=3","gravatar_id":"","url":"https://api.github.com/users/allegro","html_url":"https://github.com/allegro","followers_url":"https://api.github.com/users/allegro/followers","following_url":"https://api.github.com/users/allegro/following{/other_user}","gists_url":"https://api.github.com/users/allegro/gists{/gist_id}","starred_url":"https://api.github.com/users/allegro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allegro/subscriptions","organizations_url":"https://api.github.com/users/allegro/orgs","repos_url":"https://api.github.com/users/allegro/repos","events_url":"https://api.github.com/users/allegro/events{/privacy}","received_events_url":"https://api.github.com/users/allegro/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/allegro/hermes","description":"Fast and reliable message broker built on top of Kafka.","fork":false,"url":"https://api.github.com/repos/allegro/hermes","forks_url":"https://api.github.com/repos/allegro/hermes/forks","keys_url":"https://api.github.com/repos/allegro/hermes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/allegro/hermes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/allegro/hermes/teams","hooks_url":"https://api.github.com/repos/allegro/hermes/hooks","issue_events_url":"https://api.github.com/repos/allegro/hermes/issues/events{/number}","events_url":"https://api.github.com/repos/allegro/hermes/events","assignees_url":"https://api.github.com/repos/allegro/hermes/assignees{/user}","branches_url":"https://api.github.com/repos/allegro/hermes/branches{/branch}","tags_url":"https://api.github.com/repos/allegro/hermes/tags","blobs_url":"https://api.github.com/repos/allegro/hermes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/allegro/hermes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/allegro/hermes/git/refs{/sha}","trees_url":"https://api.github.com/repos/allegro/hermes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/allegro/hermes/statuses/{sha}","languages_url":"https://api.github.com/repos/allegro/hermes/languages","stargazers_url":"https://api.github.com/repos/allegro/hermes/stargazers","contributors_url":"https://api.github.com/repos/allegro/hermes/contributors","subscribers_url":"https://api.github.com/repos/allegro/hermes/subscribers","subscription_url":"https://api.github.com/repos/allegro/hermes/subscription","commits_url":"https://api.github.com/repos/allegro/hermes/commits{/sha}","git_commits_url":"https://api.github.com/repos/allegro/hermes/git/commits{/sha}","comments_url":"https://api.github.com/repos/allegro/hermes/comments{/number}","issue_comment_url":"https://api.github.com/repos/allegro/hermes/issues/comments{/number}","contents_url":"https://api.github.com/repos/allegro/hermes/contents/{+path}","compare_url":"https://api.github.com/repos/allegro/hermes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/allegro/hermes/merges","archive_url":"https://api.github.com/repos/allegro/hermes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/allegro/hermes/downloads","issues_url":"https://api.github.com/repos/allegro/hermes/issues{/number}","pulls_url":"https://api.github.com/repos/allegro/hermes/pulls{/number}","milestones_url":"https://api.github.com/repos/allegro/hermes/milestones{/number}","notifications_url":"https://api.github.com/repos/allegro/hermes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/allegro/hermes/labels{/name}","releases_url":"https://api.github.com/repos/allegro/hermes/releases{/id}","deployments_url":"https://api.github.com/repos/allegro/hermes/deployments","created_at":"2015-05-15T08:11:16Z","updated_at":"2016-07-13T02:11:24Z","pushed_at":"2016-07-18T09:22:48Z","git_url":"git://github.com/allegro/hermes.git","ssh_url":"git@github.com:allegro/hermes.git","clone_url":"https://github.com/allegro/hermes.git","svn_url":"https://github.com/allegro/hermes","homepage":"http://hermes.allegro.tech","size":5183,"stargazers_count":185,"watchers_count":185,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":35,"mirror_url":null,"open_issues_count":44,"forks":35,"open_issues":44,"watchers":185,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/allegro/hermes/pulls/505"},"html":{"href":"https://github.com/allegro/hermes/pull/505"},"issue":{"href":"https://api.github.com/repos/allegro/hermes/issues/505"},"comments":{"href":"https://api.github.com/repos/allegro/hermes/issues/505/comments"},"review_comments":{"href":"https://api.github.com/repos/allegro/hermes/pulls/505/comments"},"review_comment":{"href":"https://api.github.com/repos/allegro/hermes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/allegro/hermes/pulls/505/commits"},"statuses":{"href":"https://api.github.com/repos/allegro/hermes/statuses/a6611680a545b451d43f45422f98b9a0c35df399"}}}}
{"actor":{"display_login":"adamdubiel"}}