)]}'
{"ceilometer/agent.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a7701d1f723189cd01d7223807fe7f904a628ff5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            self.construct_group_id(utils.hash_of_set(p.resources))"},{"line_number":150,"context_line":"            for p in self.pipeline_manager.pipelines"},{"line_number":151,"context_line":"        ])"},{"line_number":152,"context_line":"        groups.update(static_resource_groups)"},{"line_number":153,"context_line":"        for group in groups:"},{"line_number":154,"context_line":"            self.partition_coordinator.join_group(group)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_2a66f7bb","line":152,"updated":"2014-09-18 09:02:07.000000000","message":"In current logic, when we join partition groups, the PollingTasks is not created yet. So we may have the following pipeline configuration with the same interval:\n\nsources:\n  - name: foo\n  - meters:\n      - \u0027foo\u0027\n  - resources:\n      - \u0027foo://1.1.1.1\u0027\n  - sinks:\n      - foo_sink\n\n  - name: bar\n   - meters:\n      - \u0027bar\u0027, \u0027foo\u0027\n  - resources:\n      - \u0027bar://2.2.2.2\u0027\n  - sinks:\n      - bar_sink\n\nIn this case, the code here will join 2 different groups for static resources, one for set([\u0027foo://1.1.1.1\u0027]) and another for set([\u0027bar://2.2.2.2\u0027]).\n\nBut after we setup_polling_tasks, we\u0027ll have the pollsterTask.resources[\u0027foo\u0027] \u003d set([\u0027foo://1.1.1.1\u0027, \u0027bar://2.2.2.2\u0027])\npollsterTask.resources[\u0027bar\u0027] \u003d set([\u0027bar://2.2.2.2\u0027])\n\nWhat will happen if we try to extract the subset from a group set([\u0027foo://1.1.1.1\u0027, \u0027bar://2.2.2.2\u0027]) which we never joined? Is it intentional to do so? Or should we join the group for static resources after we setup_polling_tasks?","commit_id":"315b6ddebc75baaa80e6efa0bee230c1319ac291"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"cafcda5e08aa5540e77804750505004854a8d56b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # let each set of statically-defined resources have its own group"},{"line_number":159,"context_line":"        static_resource_groups \u003d set(["},{"line_number":160,"context_line":"            self.construct_group_id(utils.hash_of_set(p.resources))"},{"line_number":161,"context_line":"            for p in self.pipeline_manager.pipelines"},{"line_number":162,"context_line":"        ])"},{"line_number":163,"context_line":"        groups.update(static_resource_groups)"},{"line_number":164,"context_line":"        for group in groups:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_bcad6ceb","line":161,"updated":"2014-09-26 14:03:27.000000000","message":"Are you missing an \"if p.resources\" condition on this list comprehension so that only the pipelines with non-empty static resources are included in the groups to be created?","commit_id":"78bd9746a3f4ca3d23fd69c062849fbd61860da4"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"abeb059a12924ffb4575882c1eddec330e356c17","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # let each set of statically-defined resources have its own group"},{"line_number":159,"context_line":"        static_resource_groups \u003d set(["},{"line_number":160,"context_line":"            self.construct_group_id(utils.hash_of_set(p.resources))"},{"line_number":161,"context_line":"            for p in self.pipeline_manager.pipelines"},{"line_number":162,"context_line":"        ])"},{"line_number":163,"context_line":"        groups.update(static_resource_groups)"},{"line_number":164,"context_line":"        for group in groups:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_d96bc783","line":161,"in_reply_to":"da9df570_796a20ef","updated":"2014-09-29 06:18:18.000000000","message":"Great catches guys, thanks!\n\n@Lianhao\u0027s 2nd observation: we won\u0027t join them twice since static_resource_groups is a set.","commit_id":"78bd9746a3f4ca3d23fd69c062849fbd61860da4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"871310581a34ed6757ff41fda074a141e0a9b649","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        # let each set of statically-defined resources have its own group"},{"line_number":159,"context_line":"        static_resource_groups \u003d set(["},{"line_number":160,"context_line":"            self.construct_group_id(utils.hash_of_set(p.resources))"},{"line_number":161,"context_line":"            for p in self.pipeline_manager.pipelines"},{"line_number":162,"context_line":"        ])"},{"line_number":163,"context_line":"        groups.update(static_resource_groups)"},{"line_number":164,"context_line":"        for group in groups:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_796a20ef","line":161,"in_reply_to":"da9df570_bcad6ceb","updated":"2014-09-28 09:42:29.000000000","message":"Agreed, no need to join group for empty pipeline resources list, as Ln58 checks the condition.\n\nAnother question is if 2 pipeline defines the same static resources, that means we\u0027ll join same group twice. Is it intended?","commit_id":"78bd9746a3f4ca3d23fd69c062849fbd61860da4"}],"ceilometer/tests/agentbase.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"cafcda5e08aa5540e77804750505004854a8d56b","unresolved":false,"context_lines":[{"line_number":716,"context_line":"                                 \u0027transformers\u0027: [],"},{"line_number":717,"context_line":"                                 \u0027publishers\u0027: [\"test\"],"},{"line_number":718,"context_line":"                                 })"},{"line_number":719,"context_line":"        self.setup_pipeline()"},{"line_number":720,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":721,"context_line":"        self.mgr.interval_task(polling_tasks.get(60))"},{"line_number":722,"context_line":"        # Only two groups need to be created, one for each pipeline,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_3cd7bc4c","line":719,"updated":"2014-09-26 14:03:27.000000000","message":"Would it good for completeness to add a third pipeline here with no static resource defined for it?\n\n(relates to my comment on https://review.openstack.org/#/c/121586/3/ceilometer/agent.py )","commit_id":"78bd9746a3f4ca3d23fd69c062849fbd61860da4"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"abeb059a12924ffb4575882c1eddec330e356c17","unresolved":false,"context_lines":[{"line_number":716,"context_line":"                                 \u0027transformers\u0027: [],"},{"line_number":717,"context_line":"                                 \u0027publishers\u0027: [\"test\"],"},{"line_number":718,"context_line":"                                 })"},{"line_number":719,"context_line":"        self.setup_pipeline()"},{"line_number":720,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":721,"context_line":"        self.mgr.interval_task(polling_tasks.get(60))"},{"line_number":722,"context_line":"        # Only two groups need to be created, one for each pipeline,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_99f85fc6","line":719,"in_reply_to":"da9df570_3cd7bc4c","updated":"2014-09-29 06:18:18.000000000","message":"Done","commit_id":"78bd9746a3f4ca3d23fd69c062849fbd61860da4"}]}
