)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"fb2795c62fc120d8072632ade0096ca7e29f5202","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, single message may contain large amount of samples,"},{"line_number":10,"context_line":"which slows down the collector on storing samples to backend database."},{"line_number":11,"context_line":"With this patch, large amount of samples will be split into multiple messages,"},{"line_number":12,"context_line":"which can effectively make use of multiple workers."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Idf22c66ca7626c4061ac1b527144d5d9db8b7516"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_d155e6c2","line":11,"range":{"start_line":11,"start_character":49,"end_line":11,"end_character":54},"updated":"2014-07-11 09:02:34.000000000","message":"split -\u003e splitted :)","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"1a9405f7ab775533e5c53f58addbf6fd7eb6315b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, single message may contain large amount of samples,"},{"line_number":10,"context_line":"which slows down the collector on storing samples to backend database."},{"line_number":11,"context_line":"With this patch, large amount of samples will be split into multiple messages,"},{"line_number":12,"context_line":"which can effectively make use of multiple workers."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Idf22c66ca7626c4061ac1b527144d5d9db8b7516"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_d33f7523","line":11,"in_reply_to":"baada198_d155e6c2","updated":"2014-07-14 06:05:24.000000000","message":"Done.","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"16732113f14870906db14933c4d3fb6d4206dc2b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, single message may contain large amount of samples,"},{"line_number":10,"context_line":"which slows down the collector on storing samples to backend database."},{"line_number":11,"context_line":"With this patch, large amount of samples will be splitted into multiple messages,"},{"line_number":12,"context_line":"which can effectively make use of multiple workers."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Idf22c66ca7626c4061ac1b527144d5d9db8b7516"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"da9df570_4d6535e0","line":11,"updated":"2014-09-22 14:05:21.000000000","message":"Too long line.","commit_id":"10b4689e60ab54d44bffeaa3f745d4e49f9c7d40"}],"ceilometer/publisher/messaging.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c10298ae2bbe7aa03eb5b4d88ac3d7d35f088583","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                for sample in samples_list"},{"line_number":152,"context_line":"            ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            LOG.audit(_(\u0027Publishing %(m)d samples on %(t)s\u0027) % ("},{"line_number":155,"context_line":"                {\u0027m\u0027: len(meters), \u0027t\u0027: topic}))"},{"line_number":156,"context_line":"            self.local_queue.append((context, topic, meters))"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_0f4ca841","line":154,"updated":"2014-09-02 21:09:22.000000000","message":"don\u0027t use audit level... leave as debug","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"da3a3d6289544e93c5e4892ce2a38fb46bdfca1e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                for sample in samples_list"},{"line_number":152,"context_line":"            ]"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            LOG.audit(_(\u0027Publishing %(m)d samples on %(t)s\u0027) % ("},{"line_number":155,"context_line":"                {\u0027m\u0027: len(meters), \u0027t\u0027: topic}))"},{"line_number":156,"context_line":"            self.local_queue.append((context, topic, meters))"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_6c5d3447","line":154,"in_reply_to":"fa98f980_0f4ca841","updated":"2014-09-03 05:12:42.000000000","message":"Done.","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c10298ae2bbe7aa03eb5b4d88ac3d7d35f088583","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                        operator.itemgetter(\u0027counter_name\u0027)):"},{"line_number":163,"context_line":"                    meter_list \u003d list(meter_list)"},{"line_number":164,"context_line":"                    topic_name \u003d topic + \u0027.\u0027 + meter_name"},{"line_number":165,"context_line":"                    LOG.audit(_(\u0027Publishing %(m)d samples on %(n)s\u0027) % ("},{"line_number":166,"context_line":"                              {\u0027m\u0027: len(meter_list), \u0027n\u0027: topic_name}))"},{"line_number":167,"context_line":"                    self.local_queue.append((context, topic_name, meter_list))"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_af62bcaa","line":165,"updated":"2014-09-02 21:09:22.000000000","message":"same","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"da3a3d6289544e93c5e4892ce2a38fb46bdfca1e","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                        operator.itemgetter(\u0027counter_name\u0027)):"},{"line_number":163,"context_line":"                    meter_list \u003d list(meter_list)"},{"line_number":164,"context_line":"                    topic_name \u003d topic + \u0027.\u0027 + meter_name"},{"line_number":165,"context_line":"                    LOG.audit(_(\u0027Publishing %(m)d samples on %(n)s\u0027) % ("},{"line_number":166,"context_line":"                              {\u0027m\u0027: len(meter_list), \u0027n\u0027: topic_name}))"},{"line_number":167,"context_line":"                    self.local_queue.append((context, topic_name, meter_list))"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_ac539c37","line":165,"in_reply_to":"fa98f980_af62bcaa","updated":"2014-09-03 05:12:42.000000000","message":"Done.","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"3e3b18ca314b491c97d1ee9e62accf7158161d85","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.split_number"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.split_threshold"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def publish_samples(self, context, samples):"},{"line_number":137,"context_line":"        \"\"\"Publish samples on RPC."}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_9d01a4b1","line":134,"updated":"2014-09-03 07:10:28.000000000","message":"Both option can be moved into split_samples method, they are not used everywhere else.","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"4cd821e6ca7946d2db3a8c2673ba7b546e1a8aa5","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.split_number"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.split_threshold"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def publish_samples(self, context, samples):"},{"line_number":137,"context_line":"        \"\"\"Publish samples on RPC."}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_ba01003a","line":134,"in_reply_to":"fa98f980_9d01a4b1","updated":"2014-09-03 13:39:12.000000000","message":"Done.","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"3e3b18ca314b491c97d1ee9e62accf7158161d85","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                                           samples_length, number))"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            results \u003d self._split(samples, 0, samples_length, number)"},{"line_number":249,"context_line":"        return results"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _split(self, samples, start, stop, step):"},{"line_number":252,"context_line":"        return [samples[i:i + step] for i in range(start, stop, step)]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_bd182876","line":249,"updated":"2014-09-03 07:10:28.000000000","message":"Looks a bit complicated for just splitting a list, WDYT of :\n\n     results \u003d []\n     size \u003d (split_number + len(samples) % split_number)\n     while len(samples) \u003e size:\n         results.append(samples[:size])\n         samples \u003d samples[size:]\n         size \u003d split_number\n     return results","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"223fe1dd3953a701189b37d5f10f8f35f4d88fb2","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                                           samples_length, number))"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            results \u003d self._split(samples, 0, samples_length, number)"},{"line_number":249,"context_line":"        return results"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _split(self, samples, start, stop, step):"},{"line_number":252,"context_line":"        return [samples[i:i + step] for i in range(start, stop, step)]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_4d577cca","line":249,"in_reply_to":"fa98f980_44875cd7","updated":"2014-09-03 13:50:48.000000000","message":"Ok, so what is the reason of choising the number of rpc message to send with a unpredictable number of samples in it, instead of the maximum number of samples that a rpc message will have ?","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"b08b9566ba0524c2eb0d105c1a75c2a9e92ecd48","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                                           samples_length, number))"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            results \u003d self._split(samples, 0, samples_length, number)"},{"line_number":249,"context_line":"        return results"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _split(self, samples, start, stop, step):"},{"line_number":252,"context_line":"        return [samples[i:i + step] for i in range(start, stop, step)]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_44875cd7","line":249,"in_reply_to":"fa98f980_bd182876","updated":"2014-09-03 11:09:11.000000000","message":"In your code, split_number is divisor of samples.\n\nIn my intention, split_number is the wanting result of dividing samples.","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"1962423d5bbd6f950f4282bab6080df93ef193bf","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               deprecated_group\u003d\"DEFAULT\","},{"line_number":47,"context_line":"               ),"},{"line_number":48,"context_line":"    cfg.Opt(\u0027split_threshold\u0027,"},{"line_number":49,"context_line":"            default\u003d1,"},{"line_number":50,"context_line":"            type\u003dSplitIntType,"},{"line_number":51,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":52,"context_line":"                 \u0027splitting occurs.\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"da9df570_506f8e92","line":49,"updated":"2014-09-22 14:42:05.000000000","message":"So by default now, each sample gets sent in a separate message? What about the overhead? And how can we specify that we don\u0027t want to split at all?","commit_id":"10b4689e60ab54d44bffeaa3f745d4e49f9c7d40"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d81ed466463d45bcc27213aa0cc78c1f81dc9556","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            type\u003dSplitIntType,"},{"line_number":51,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":52,"context_line":"                 \u0027splitting occurs.\u0027),"},{"line_number":53,"context_line":"    cfg.Opt(\u0027split_number\u0027,"},{"line_number":54,"context_line":"            default\u003d1,"},{"line_number":55,"context_line":"            type\u003dSplitIntType,"},{"line_number":56,"context_line":"            help\u003d\u0027The number of messages that samples are split into, \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_fc39c0a4","line":53,"updated":"2014-09-03 15:35:05.000000000","message":"i agree with sileht, this option adds an extra level that is probably not that useful. it\u0027s use case sort of negates the threshold option","commit_id":"10b4689e60ab54d44bffeaa3f745d4e49f9c7d40"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"b661ada9a248a1111ac67f1c00c2bb181cf0b866","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                for sample in samples_list"},{"line_number":148,"context_line":"            ]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"            LOG.debug(_(\u0027Publishing %(m)d samples on %(t)s\u0027) % ("},{"line_number":151,"context_line":"                {\u0027m\u0027: len(meters), \u0027t\u0027: topic}))"},{"line_number":152,"context_line":"            self.local_queue.append((context, topic, meters))"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baa201ad_e1bf8d5e","line":150,"updated":"2014-10-14 09:00:47.000000000","message":"Please, change one letter variables to readable in log string if you do not complicate it. Readable variables in logs may simplify work for translators.","commit_id":"10b4689e60ab54d44bffeaa3f745d4e49f9c7d40"}],"ceilometer/publisher/rpc.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e3f60f6146123db26512383b96555ad91e71b7db","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            cfg.CONF.set_override(\u0027rabbit_max_retries\u0027, value)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_workers():"},{"line_number":87,"context_line":"    workers \u003d (cfg.CONF.get(\u0027collector_workers\u0027) or"},{"line_number":88,"context_line":"               utils.cpu_count())"},{"line_number":89,"context_line":"    if workers and workers \u003c 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_deef45e8","line":86,"updated":"2014-05-20 16:53:11.000000000","message":"should reuse:\n\nhttps://github.com/openstack/ceilometer/blob/2633eb8c998007d08e37dc02d6bed69a3c633de7/ceilometer/service.py#L100","commit_id":"9a8992df2f85d7876baeec023b7a4a8cc390c2a6"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"63d54a736afdd12dda2c607b0ba622753c5bc814","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            cfg.CONF.set_override(\u0027rabbit_max_retries\u0027, value)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_workers():"},{"line_number":87,"context_line":"    workers \u003d (cfg.CONF.get(\u0027collector_workers\u0027) or"},{"line_number":88,"context_line":"               utils.cpu_count())"},{"line_number":89,"context_line":"    if workers and workers \u003c 1:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_3abc586c","line":86,"in_reply_to":"7adec928_deef45e8","updated":"2014-05-23 07:37:23.000000000","message":"Done","commit_id":"9a8992df2f85d7876baeec023b7a4a8cc390c2a6"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d9ac706c94c2b2f952231f5a39af28c8dcfac5b1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from ceilometer.openstack.common import log"},{"line_number":33,"context_line":"from ceilometer import publisher"},{"line_number":34,"context_line":"from ceilometer.publisher import utils"},{"line_number":35,"context_line":"from ceilometer.service import get_workers"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_b8ffbb33","line":35,"updated":"2014-05-28 07:35:07.000000000","message":"According to http://docs.openstack.org/developer/hacking/#imports, we should only import modules, not objects/func directly.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from ceilometer.openstack.common import log"},{"line_number":33,"context_line":"from ceilometer import publisher"},{"line_number":34,"context_line":"from ceilometer.publisher import utils"},{"line_number":35,"context_line":"from ceilometer.service import get_workers"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_4737844e","line":35,"in_reply_to":"3ae8d1ca_b8ffbb33","updated":"2014-05-29 11:59:29.000000000","message":"Thank you for your advice. But this line will be removed in next patch.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027split_threshold\u0027,"},{"line_number":47,"context_line":"               default\u003d0,"},{"line_number":48,"context_line":"               help\u003d\u0027Maximum number of samples that message splitting \u0027"},{"line_number":49,"context_line":"                    \u0027does not occur. 0 means never split.\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_9a472c77","line":49,"updated":"2014-05-23 07:54:44.000000000","message":"Better to recast this negative help string in positive terms.\n\ne.g.\n\n   help\u003d\u0027Maximum number of samples per message before \u0027\n        \u0027splitting occurs. 0 means infinity.\u0027),","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027split_threshold\u0027,"},{"line_number":47,"context_line":"               default\u003d0,"},{"line_number":48,"context_line":"               help\u003d\u0027Maximum number of samples that message splitting \u0027"},{"line_number":49,"context_line":"                    \u0027does not occur. 0 means never split.\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_8740aca6","line":49,"in_reply_to":"7adec928_9a472c77","updated":"2014-05-29 11:59:29.000000000","message":"Done. But 0 is no longer a special value.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            cfg.CONF.set_override(\u0027rabbit_max_retries\u0027, value)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_split_threshold():"},{"line_number":87,"context_line":"    threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":88,"context_line":"    if threshold \u003c 0:"},{"line_number":89,"context_line":"        threshold \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_5502d509","line":86,"updated":"2014-05-23 07:54:44.000000000","message":"Would this be better as a static method on RPCPublisher called _get_split_threshold()?","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            cfg.CONF.set_override(\u0027rabbit_max_retries\u0027, value)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def get_split_threshold():"},{"line_number":87,"context_line":"    threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":88,"context_line":"    if threshold \u003c 0:"},{"line_number":89,"context_line":"        threshold \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_c74ab4c4","line":86,"in_reply_to":"7adec928_5502d509","updated":"2014-05-29 11:59:29.000000000","message":"Done","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":88,"context_line":"    if threshold \u003c 0:"},{"line_number":89,"context_line":"        threshold \u003d 0"},{"line_number":90,"context_line":"    return threshold"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class RPCPublisher(publisher.PublisherBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_fa575024","line":90,"updated":"2014-05-23 07:54:44.000000000","message":"Lines 88-90 clearer as:\n\n  return threshold if threshold \u003e 0 else 0","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":88,"context_line":"    if threshold \u003c 0:"},{"line_number":89,"context_line":"        threshold \u003d 0"},{"line_number":90,"context_line":"    return threshold"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class RPCPublisher(publisher.PublisherBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_e745f0b3","line":90,"in_reply_to":"7adec928_fa575024","updated":"2014-05-29 11:59:29.000000000","message":"Done","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _split_samples(self, samples):"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        split_number \u003d self.workers"},{"line_number":220,"context_line":"        samples_length \u003d len(samples)"},{"line_number":221,"context_line":"        if (split_number \u003d\u003d 1 or self.split_threshold \u003d\u003d 0 or"},{"line_number":222,"context_line":"           samples_length \u003c\u003d self.split_threshold):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_15468d4f","line":219,"updated":"2014-05-23 07:54:44.000000000","message":"I\u0027m confused by this logic. The publish logic runs on the agent side, yet it seems to depend on config set on the collector side.\n\nNote that the agent and collector may well be running on different hosts, hence have different ceilometer.conf files.\n\nSo we can\u0027t assume that the collector.workers configured for on the agent side is the same as this config option in force on the actual collector.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _split_samples(self, samples):"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        split_number \u003d self.workers"},{"line_number":220,"context_line":"        samples_length \u003d len(samples)"},{"line_number":221,"context_line":"        if (split_number \u003d\u003d 1 or self.split_threshold \u003d\u003d 0 or"},{"line_number":222,"context_line":"           samples_length \u003c\u003d self.split_threshold):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_2717d8a4","line":219,"in_reply_to":"7adec928_15468d4f","updated":"2014-05-29 11:59:29.000000000","message":"In consideration of the fact that the agent and the collector may well be running on different hosts, and the case that multiple collector services are running,\nwe created another config option, instead of setting split_number automatically.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        split_number \u003d self.workers"},{"line_number":220,"context_line":"        samples_length \u003d len(samples)"},{"line_number":221,"context_line":"        if (split_number \u003d\u003d 1 or self.split_threshold \u003d\u003d 0 or"},{"line_number":222,"context_line":"           samples_length \u003c\u003d self.split_threshold):"},{"line_number":223,"context_line":"            return [samples]"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_b54a3925","line":221,"range":{"start_line":221,"start_character":38,"end_line":221,"end_character":53},"updated":"2014-05-23 07:54:44.000000000","message":"So if the number of collector workers is 1, there can still be multiple (single-threaded) collectors services running concurrently?\n\nIt doesn\u0027t seem that logical to tune the chunk size for the number of workers only, but to ignore the multi-collector case.\n\n(Unless I\u0027m missing something)","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        split_number \u003d self.workers"},{"line_number":220,"context_line":"        samples_length \u003d len(samples)"},{"line_number":221,"context_line":"        if (split_number \u003d\u003d 1 or self.split_threshold \u003d\u003d 0 or"},{"line_number":222,"context_line":"           samples_length \u003c\u003d self.split_threshold):"},{"line_number":223,"context_line":"            return [samples]"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_4785c4ce","line":221,"in_reply_to":"7adec928_b54a3925","updated":"2014-05-29 11:59:29.000000000","message":"Please see previous comment.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5579103651ce5168f4cf49ec034aba9b15eee83b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                                           samples_length, number))"},{"line_number":237,"context_line":"        else:"},{"line_number":238,"context_line":"            results \u003d self._split(samples, 0, samples_length, number)"},{"line_number":239,"context_line":"        return results"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def _split(self, samples, start, stop, step):"},{"line_number":242,"context_line":"        return [samples[i:i + step] for i in range(start, stop, step)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_b5dcf975","line":239,"updated":"2014-05-23 07:54:44.000000000","message":"IINM, this logic doesn\u0027t account for the possibility that that:\n\n  samples_length / split_number \u003e split_threshold\n\ni.e. that even after splitting, the number of samples per chunk still exceeds the configured split threshold.\n\ne.g. 20 samples, 2 workers, with a threshold of 5","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":8844,"name":"Mitsuru Kanabuchi","email":"kanabuchi.mitsuru@po.ntts.co.jp","username":"kanabuchi"},"change_message_id":"b7402fd095ab502443216941af97312a05436df2","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                                           samples_length, number))"},{"line_number":237,"context_line":"        else:"},{"line_number":238,"context_line":"            results \u003d self._split(samples, 0, samples_length, number)"},{"line_number":239,"context_line":"        return results"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def _split(self, samples, start, stop, step):"},{"line_number":242,"context_line":"        return [samples[i:i + step] for i in range(start, stop, step)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ae8d1ca_c778f4f4","line":239,"in_reply_to":"7adec928_b5dcf975","updated":"2014-05-29 11:59:29.000000000","message":"Important point of this patch is that splitting samples into multiple (split_number) messages,\nin order to effectively make use of multiple workers.\nHowever, there is a overhead in composing multiple messages, so we want that splitting does not occur when the number of samples is small.\nsplit_threshold is for this purpose, not intended to limit the number of samples in a message.\nIt seems to be most effective when split_number is around the number of workers.\nHowever as Eoghan have pointed out, it turned out to be difficult to automatically set the appropriate split_number, so it is changed to configurable value.","commit_id":"71a92bb1f6d2d698b8252ffdd9c2a33a1d8d7b7a"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"f092ec34e65531aeecb3e1c2616ef00fcf70ec6b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"               help\u003d\u0027The topic that ceilometer uses for metering messages.\u0027,"},{"line_number":43,"context_line":"               deprecated_group\u003d\"DEFAULT\","},{"line_number":44,"context_line":"               ),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027split_threshold\u0027,"},{"line_number":46,"context_line":"               default\u003d1,"},{"line_number":47,"context_line":"               help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":48,"context_line":"                    \u0027splitting occurs.\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_daee36b4","line":45,"updated":"2014-06-09 16:01:45.000000000","message":"You may replace methods \"_get_split_number\" and \n\"_get_split_threshold\" by opts validating. \nIt may be look like: \n...\nfrom oslo.config import types\n...\nSplitIntType \u003d types.Integer(1)\n...\ncfg.Opt(\u0027split_threshold\u0027,\n        default\u003d1,\n        type\u003dSplitIntType(),...\n),\ncfg.Opt(\u0027split_number\u0027,\n        default\u003d1,\n        type\u003dSplitIntType(),...\n),\n...\nthis code creates Integer type with min\u003d1,\nand raise ValueError if value is lesser than 1.\nI think it\u0027s more correct, \nbecause we should not ignore than users set invalid config values.","commit_id":"7725d42d1bfdf2d0c5c5ff900216a368a29af584"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"041c9a83bb18cab82d1579f1d9a571656847a031","unresolved":false,"context_lines":[{"line_number":42,"context_line":"               help\u003d\u0027The topic that ceilometer uses for metering messages.\u0027,"},{"line_number":43,"context_line":"               deprecated_group\u003d\"DEFAULT\","},{"line_number":44,"context_line":"               ),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027split_threshold\u0027,"},{"line_number":46,"context_line":"               default\u003d1,"},{"line_number":47,"context_line":"               help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":48,"context_line":"                    \u0027splitting occurs.\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e85cc37f","line":45,"in_reply_to":"1ae5cdf2_daee36b4","updated":"2014-07-11 07:30:28.000000000","message":"Done.","commit_id":"7725d42d1bfdf2d0c5c5ff900216a368a29af584"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"fb2795c62fc120d8072632ade0096ca7e29f5202","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The topic that ceilometer uses for metering messages.\u0027,"},{"line_number":45,"context_line":"               deprecated_group\u003d\"DEFAULT\","},{"line_number":46,"context_line":"               ),"},{"line_number":47,"context_line":"    cfg.Opt(\u0027split_threshold\u0027,"},{"line_number":48,"context_line":"            default\u003d1,"},{"line_number":49,"context_line":"            type\u003dSplitIntType,"},{"line_number":50,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_b195d234","line":47,"updated":"2014-07-11 09:02:34.000000000","message":"why not using IntOpt? Without this type magic?","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"90188cd3f335402ba194c9b9435444753693bad6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027The topic that ceilometer uses for metering messages.\u0027,"},{"line_number":45,"context_line":"               deprecated_group\u003d\"DEFAULT\","},{"line_number":46,"context_line":"               ),"},{"line_number":47,"context_line":"    cfg.Opt(\u0027split_threshold\u0027,"},{"line_number":48,"context_line":"            default\u003d1,"},{"line_number":49,"context_line":"            type\u003dSplitIntType,"},{"line_number":50,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_f75c9a7f","line":47,"in_reply_to":"baada198_b195d234","updated":"2014-07-11 10:10:07.000000000","message":"Please check the comment by Ilya Tyaptin at PatchSet4.\n\ntype\u003dSplitIntType creates Integer type with min\u003d1, and raise ValueError if value is lesser than 1.","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"fb2795c62fc120d8072632ade0096ca7e29f5202","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            type\u003dSplitIntType,"},{"line_number":50,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":51,"context_line":"                 \u0027splitting occurs.\u0027),"},{"line_number":52,"context_line":"    cfg.Opt(\u0027split_number\u0027,"},{"line_number":53,"context_line":"            default\u003d1,"},{"line_number":54,"context_line":"            type\u003dSplitIntType,"},{"line_number":55,"context_line":"            help\u003d\u0027The number of messages that samples are split into, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_d196c63d","line":52,"updated":"2014-07-11 09:02:34.000000000","message":"ditto","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"1a9405f7ab775533e5c53f58addbf6fd7eb6315b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            type\u003dSplitIntType,"},{"line_number":50,"context_line":"            help\u003d\u0027Maximum number of samples per message before \u0027"},{"line_number":51,"context_line":"                 \u0027splitting occurs.\u0027),"},{"line_number":52,"context_line":"    cfg.Opt(\u0027split_number\u0027,"},{"line_number":53,"context_line":"            default\u003d1,"},{"line_number":54,"context_line":"            type\u003dSplitIntType,"},{"line_number":55,"context_line":"            help\u003d\u0027The number of messages that samples are split into, \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_334351b0","line":52,"in_reply_to":"baada198_d196c63d","updated":"2014-07-14 06:05:24.000000000","message":"ditto","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"fb2795c62fc120d8072632ade0096ca7e29f5202","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        transport \u003d messaging.get_transport()"},{"line_number":122,"context_line":"        self.rpc_client \u003d messaging.get_rpc_client(transport, version\u003d\u00271.0\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.get(\u0027split_number\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5100f6aa","line":124,"updated":"2014-07-11 09:02:34.000000000","message":"probably I don\u0027t understand smth, but why are you using \u0027get\u0027? I think cfg.CONF.publisher_rpc.split_number will be ok... Am I missing smth? They are registered here and have the default values :-\\","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"1a9405f7ab775533e5c53f58addbf6fd7eb6315b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        transport \u003d messaging.get_transport()"},{"line_number":122,"context_line":"        self.rpc_client \u003d messaging.get_rpc_client(transport, version\u003d\u00271.0\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.get(\u0027split_number\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_f33c7931","line":124,"in_reply_to":"baada198_5100f6aa","updated":"2014-07-14 06:05:24.000000000","message":"Done.","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"fb2795c62fc120d8072632ade0096ca7e29f5202","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.get(\u0027split_number\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def publish_samples(self, context, samples):"},{"line_number":129,"context_line":"        \"\"\"Publish samples on RPC."}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_b13232a5","line":126,"updated":"2014-07-11 09:02:34.000000000","message":"ditto","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"1a9405f7ab775533e5c53f58addbf6fd7eb6315b","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.split_number \u003d cfg.CONF.publisher_rpc.get(\u0027split_number\u0027)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.split_threshold \u003d cfg.CONF.publisher_rpc.get(\u0027split_threshold\u0027)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def publish_samples(self, context, samples):"},{"line_number":129,"context_line":"        \"\"\"Publish samples on RPC."}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_13464dc0","line":126,"in_reply_to":"baada198_b13232a5","updated":"2014-07-14 06:05:24.000000000","message":"Done.","commit_id":"b0d6a1ad9d21350dbb86e40fbb317b37e7e0bd1f"}],"ceilometer/tests/publisher/test_messaging_publisher.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c10298ae2bbe7aa03eb5b4d88ac3d7d35f088583","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    def test_published_with_split_number_is_default(self):"},{"line_number":209,"context_line":"        self.CONF.set_override(\u0027split_threshold\u0027, 1, group\u003d\u0027publisher_rpc\u0027)"},{"line_number":210,"context_line":"        with mock.patch.object(msg_publisher.RPCPublisher, \u0027flush\u0027):"},{"line_number":211,"context_line":"            publisher \u003d msg_publisher.RPCPublisher(netutils.urlsplit(\u0027rpc://\u0027))"},{"line_number":212,"context_line":"            publisher.publish_samples(mock.MagicMock(),"},{"line_number":213,"context_line":"                                      self.test_data)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_6fa9b47a","line":211,"updated":"2014-09-02 21:09:22.000000000","message":"is there a reason this is all rpc specific? the code seems to apply to both rpc and notifier publishers","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"da3a3d6289544e93c5e4892ce2a38fb46bdfca1e","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    def test_published_with_split_number_is_default(self):"},{"line_number":209,"context_line":"        self.CONF.set_override(\u0027split_threshold\u0027, 1, group\u003d\u0027publisher_rpc\u0027)"},{"line_number":210,"context_line":"        with mock.patch.object(msg_publisher.RPCPublisher, \u0027flush\u0027):"},{"line_number":211,"context_line":"            publisher \u003d msg_publisher.RPCPublisher(netutils.urlsplit(\u0027rpc://\u0027))"},{"line_number":212,"context_line":"            publisher.publish_samples(mock.MagicMock(),"},{"line_number":213,"context_line":"                                      self.test_data)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa98f980_ec512437","line":211,"in_reply_to":"fa98f980_6fa9b47a","updated":"2014-09-03 05:12:42.000000000","message":"Done.","commit_id":"20e23d59d5e08a28f3b26a7bc17fd6300875057a"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"3e3b18ca314b491c97d1ee9e62accf7158161d85","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self.assertEqual(\u0027default\u0027, publisher.policy)"},{"line_number":205,"context_line":"        self.assertEqual(2, len(fake_send.mock_calls))"},{"line_number":206,"context_line":"        self.assertEqual(0, len(publisher.local_queue))"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_published_with_split_number_is_default(self):"},{"line_number":209,"context_line":"        self.CONF.set_override(\u0027split_threshold\u0027, 1, group\u003d\u0027publisher_rpc\u0027)"},{"line_number":210,"context_line":"        publisher \u003d self.publisher_cls("}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_a2e2c32c","line":207,"updated":"2014-09-03 07:10:28.000000000","message":"Those tests need to check the content of the generated samples to be sure that they are split as expected.","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"},{"author":{"_account_id":8988,"name":"Rikimaru Honjo","email":"honjo.rikimaru@ntt-tx.co.jp","username":"rikimaru.honjo","inactive":true},"change_message_id":"4cd821e6ca7946d2db3a8c2673ba7b546e1a8aa5","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self.assertEqual(\u0027default\u0027, publisher.policy)"},{"line_number":205,"context_line":"        self.assertEqual(2, len(fake_send.mock_calls))"},{"line_number":206,"context_line":"        self.assertEqual(0, len(publisher.local_queue))"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_published_with_split_number_is_default(self):"},{"line_number":209,"context_line":"        self.CONF.set_override(\u0027split_threshold\u0027, 1, group\u003d\u0027publisher_rpc\u0027)"},{"line_number":210,"context_line":"        publisher \u003d self.publisher_cls("}],"source_content_type":"text/x-python","patch_set":9,"id":"fa98f980_1af12c6b","line":207,"in_reply_to":"fa98f980_a2e2c32c","updated":"2014-09-03 13:39:12.000000000","message":"Done.","commit_id":"cc344f135130371ad047b3a05dc1d181f737ee23"}]}
