)]}'
{"zaqar/tests/unit/transport/wsgi/v2_0/test_messages.py":[{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"95e260ce63dd5c98dd66420b8b5b1feebbca3bad","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        message \u003d jsonutils.loads(result[0])"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        self.assertEqual(999, message[\u0027ttl\u0027])"},{"line_number":288,"context_line":"        self.simulate_delete(queue_path, headers\u003dself.headers)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def test_post_using_queue_max_messages_post_size(self):"},{"line_number":291,"context_line":"        queue_path \u003d self.url_prefix + \u0027/queues/test_queue2\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_b2d3ae03","line":288,"range":{"start_line":288,"start_character":8,"end_line":288,"end_character":62},"updated":"2016-02-29 01:51:05.000000000","message":"NIT: Maybe instead of this it\u0027s better to use self.addCleanup method after L272. Just like in the test case above.\nSame thing for test case below.","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"}],"zaqar/tests/unit/transport/wsgi/v2_0/test_validation.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0bb3060dc9ade6be555ca00189b77c668c345b0d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                          self.project_id,"},{"line_number":127,"context_line":"                          body\u003d\u0027{\"_max_message_size\": 255}\u0027)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(falcon.HTTP_204, self.srmock.status)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # Size over max"},{"line_number":132,"context_line":"        self.simulate_put(self.url_prefix + \u0027/queues/queue2\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a54edaf_b2eb3eb0","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":40},"updated":"2016-02-13 08:59:50.000000000","message":"There should be 201 since new queue created successfully with normal case.","commit_id":"32f44fc0d3a722c84dbbbf2d86e1a0d5de9199d2"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"811d848b628b03f34782c1b13889ba73bf39eb84","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                          self.project_id,"},{"line_number":127,"context_line":"                          body\u003d\u0027{\"_max_message_size\": 255}\u0027)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.assertEqual(falcon.HTTP_204, self.srmock.status)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        # Size over max"},{"line_number":132,"context_line":"        self.simulate_put(self.url_prefix + \u0027/queues/queue2\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_5992be58","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":40},"in_reply_to":"1a54edaf_b2eb3eb0","updated":"2016-02-14 20:11:25.000000000","message":"Done","commit_id":"32f44fc0d3a722c84dbbbf2d86e1a0d5de9199d2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                          headers\u003dempty_headers)"},{"line_number":100,"context_line":"        self.assertEqual(falcon.HTTP_400, self.srmock.status)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_queue_metadata_putting(self):"},{"line_number":103,"context_line":"        # TTL normal case"},{"line_number":104,"context_line":"        self.simulate_put(self.url_prefix + \u0027/queues/queue1\u0027,"},{"line_number":105,"context_line":"                          self.project_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_a6a64051","line":102,"updated":"2016-02-25 02:42:28.000000000","message":"Please make sure queues from this test case will get deleted in the end, like in other test cases in this file.\nBecause, when I run this test second time, it fails:\ntesttools.matchers._impl.MismatchError: \u0027201 Created\u0027 !\u003d \u0027204 No Content\u0027","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"95e260ce63dd5c98dd66420b8b5b1feebbca3bad","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.assertEqual(falcon.HTTP_400, self.srmock.status)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.simulate_delete(queue_1, self.project_id)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Test _max_messages_post_size"},{"line_number":129,"context_line":"        # Size normal case"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_72cf6629","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":54},"updated":"2016-02-29 01:51:05.000000000","message":"Here we definitely want to use self.addCleanup method after L108 instead of just calling self.simulate_delete in the end.\n\nBecause if test case will fail before self.simulate_delete for some reason, the queue will remain undeleted. Even if the original cause of fail would be fixed, the undeleted queue will always cause fail at L110, forcing the tester to drop databases manually.\n\nSame for L144.","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"753edb0525c62578e537b2f79c040a3654145570","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.assertEqual(falcon.HTTP_400, self.srmock.status)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        self.simulate_delete(queue_1, self.project_id)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # Test _max_messages_post_size"},{"line_number":129,"context_line":"        # Size normal case"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_59618cd2","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":54},"in_reply_to":"9aed3d3a_72cf6629","updated":"2016-02-29 14:13:56.000000000","message":"It make senses, should be fixed.","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"7fc8e56cf7e0a9f2d366416146a034b9e28189ef","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.simulate_put(queue_1,"},{"line_number":114,"context_line":"                          self.project_id,"},{"line_number":115,"context_line":"                          body\u003d\u0027{\"_default_message_ttl\": 59}\u0027)"},{"line_number":116,"context_line":"        self.addCleanup(self.simulate_delete, queue_1, headers\u003dself.headers)"},{"line_number":117,"context_line":"        self.assertEqual(falcon.HTTP_400, self.srmock.status)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # TTL over max"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_8db60df7","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":76},"updated":"2016-03-01 04:19:24.000000000","message":"NIT: I think self.addCleanup for queue_1 at L109 is already enough. And we don\u0027t need to repeat it.\n\nSame for queue_2.","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"0731ffec6b605814343ad7c82f40197044df5c50","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        self.simulate_put(queue_1,"},{"line_number":114,"context_line":"                          self.project_id,"},{"line_number":115,"context_line":"                          body\u003d\u0027{\"_default_message_ttl\": 59}\u0027)"},{"line_number":116,"context_line":"        self.addCleanup(self.simulate_delete, queue_1, headers\u003dself.headers)"},{"line_number":117,"context_line":"        self.assertEqual(falcon.HTTP_400, self.srmock.status)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # TTL over max"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_bf5e2c43","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":76},"in_reply_to":"9aed3d3a_8db60df7","updated":"2016-03-01 20:56:36.000000000","message":"My brain was fried ATM.","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"}],"zaqar/transport/validation.py":[{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"dfe969dd37a2b41e8d6ea2e4eff6637a5d467bf9","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        if (max_msg_size_queue and"},{"line_number":177,"context_line":"                max_msg_size_queue \u003e self._limits_conf.max_messages_post_size):"},{"line_number":178,"context_line":"                raise ValidationFailed("},{"line_number":179,"context_line":"                    _(u\u0027_max_message_size is too large. Max size can be \u0027"},{"line_number":180,"context_line":"                      \u0027defined for a queue is {0}\u0027),"},{"line_number":181,"context_line":"                    self._limits_conf.max_messages_post_size)"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_0a142842","line":179,"updated":"2016-02-15 20:42:16.000000000","message":"\"Maximum allowed size is {0}\"","commit_id":"28b9a8316bbeee1f655fa2122e29288083866329"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        if ttl_queue:"},{"line_number":167,"context_line":"            if not (MIN_MESSAGE_TTL \u003c\u003d ttl_queue \u003c\u003d"},{"line_number":168,"context_line":"                    self._limits_conf.max_message_ttl):"},{"line_number":169,"context_line":"                msg \u003d _(u\u0027The TTL for a message may not exceed {0} \u0027"},{"line_number":170,"context_line":"                        \u0027seconds, and must be at least {1} seconds long.\u0027)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"                raise ValidationFailed("}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_8f850caf","line":169,"range":{"start_line":169,"start_character":26,"end_line":169,"end_character":62},"updated":"2016-02-25 02:42:28.000000000","message":"NIT:\ns/The TTL for a message may not exceed/_default_message_ttl may not exceed","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                raise ValidationFailed("},{"line_number":173,"context_line":"                    msg, self._limits_conf.max_message_ttl, MIN_MESSAGE_TTL)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        max_msg_size_queue \u003d queue_metadata.get(\u0027_max_message_size\u0027, None)"},{"line_number":176,"context_line":"        if (max_msg_size_queue and"},{"line_number":177,"context_line":"                max_msg_size_queue \u003e self._limits_conf.max_messages_post_size):"},{"line_number":178,"context_line":"                raise ValidationFailed("}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_efac988e","line":175,"range":{"start_line":175,"start_character":49,"end_line":175,"end_character":66},"updated":"2016-02-25 02:42:28.000000000","message":"Maybe rename it to \"_max_messages_post_size\" so it would be named like config option?\nAlso as you can see on L57 the config option had name \u0027max_message_size\u0027 in the past. Maybe the option\u0027s name \u0027max_message_size\u0027 was bad for some reason, so the option was renamed.","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            return"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        if max_msg_post_size:"},{"line_number":207,"context_line":"            if content_length \u003e max_msg_post_size:"},{"line_number":208,"context_line":"                raise ValidationFailed("},{"line_number":209,"context_line":"                    _(u\u0027Message collection size is too large. Max size \u0027"},{"line_number":210,"context_line":"                      \u0027accepted by current queue is {0}\u0027), max_msg_post_size)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_af6730e9","line":207,"updated":"2016-02-25 02:42:28.000000000","message":"NIT:\nOkay, it\u0027s impossible to create a queue with attribute \u0027_max_message_size\u0027 bigger than self._limits_conf.max_messages_post_size.\n\nBut if cloud admin will decide to lower self._limits_conf.max_messages_post_size, it will have no effect on already created queue with attribute. The user will still be able to continue post messages with big size.\n\nIs this a right behavior?","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"574152ab0149eff61588dd86f7772668779b06c4","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            msg \u003d _(u\u0027Queue metadata is too large. Max size: {0}\u0027)"},{"line_number":154,"context_line":"            raise ValidationFailed(msg, self._limits_conf.max_queue_metadata)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def queue_metadata_putting(self, queue_metadata):"},{"line_number":157,"context_line":"        \"\"\"Checking if the reserved attributes of the queue are valid."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        :param queue_metadata: Queue\u0027s metadata."}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_465a8d51","line":156,"updated":"2016-02-27 01:50:11.000000000","message":"I noticed one more thing. We need to check types of metadata attributes. We definitely don\u0027t want Python to compare string and int, for example.","commit_id":"f4806aa6cdbfda0d51516e541de1b76e721ee3b2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"574152ab0149eff61588dd86f7772668779b06c4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                                    self._limits_conf.max_messages_post_size):"},{"line_number":210,"context_line":"                raise ValidationFailed("},{"line_number":211,"context_line":"                    _(u\u0027Message collection size is too large. Max size \u0027"},{"line_number":212,"context_line":"                      \u0027accepted by current queue is {0}\u0027), max_msg_post_size)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        if content_length \u003e self._limits_conf.max_messages_post_size:"},{"line_number":215,"context_line":"            raise ValidationFailed("}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_fc5d2e7a","line":212,"range":{"start_line":212,"start_character":59,"end_line":212,"end_character":76},"updated":"2016-02-27 01:50:11.000000000","message":"What if:\nself._limits_conf.max_messages_post_size \u003c content_length \u003c max_msg_post_size\n\nThe user will be surprized why his message hasn\u0027t passed validation, even though it\u0027s smaller than max_msg_post_size. So let\u0027s fix it.\n\nMaybe show something like this to the user, so he will always know what\u0027s going on:\n\"Message collection size is too large. Max size {max_size}. Explanation: max size \u003d min(server max_msg_post_size: {server_limit}, queue max_msg_post_size {queue_limit}).\"\n\nMy sick imagination: I wonder if client code will be written that will try to parse such error message and decide what to do next. For example, to increase queue max_msg_post_size.\nIf so, we should ensure the format of error message will not change in the future. We can left a comment in code.","commit_id":"f4806aa6cdbfda0d51516e541de1b76e721ee3b2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"95e260ce63dd5c98dd66420b8b5b1feebbca3bad","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            return"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        queue_default_ttl \u003d queue_metadata.get(\u0027_default_message_ttl\u0027, None)"},{"line_number":166,"context_line":"        if queue_default_ttl and not isinstance(queue_default_ttl, int):"},{"line_number":167,"context_line":"            msg \u003d _(u\u0027_default_message_ttl must be integer.\u0027)"},{"line_number":168,"context_line":"            raise ValidationFailed(msg)"},{"line_number":169,"context_line":"        if queue_default_ttl:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_b298cec1","line":166,"range":{"start_line":166,"start_character":33,"end_line":166,"end_character":72},"updated":"2016-02-29 01:51:05.000000000","message":"NIT: I would put this condition inside \"if queue_default_ttl\" on L169. I would done similar thing to queue_max_msg_size too. But it\u0027s okay to keep it as is.","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"95e260ce63dd5c98dd66420b8b5b1feebbca3bad","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        queue_max_msg_size \u003d queue_metadata.get(\u0027_max_messages_post_size\u0027,"},{"line_number":178,"context_line":"                                                None)"},{"line_number":179,"context_line":"        if queue_max_msg_size and not isinstance(queue_max_msg_size, int):"},{"line_number":180,"context_line":"            msg \u003d _(u\u0027_max_msg_size_queue must be integer.\u0027)"},{"line_number":181,"context_line":"            raise ValidationFailed(msg)"},{"line_number":182,"context_line":"        if (queue_max_msg_size and"},{"line_number":183,"context_line":"                queue_max_msg_size \u003e self._limits_conf.max_messages_post_size):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_b26a8eb1","line":180,"range":{"start_line":180,"start_character":22,"end_line":180,"end_character":41},"updated":"2016-02-29 01:51:05.000000000","message":"s/_max_msg_size_queue/_max_messages_post_size","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"7fc8e56cf7e0a9f2d366416146a034b9e28189ef","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            msg \u003d _(u\u0027_max_messages_post_size must be integer.\u0027)"},{"line_number":182,"context_line":"            raise ValidationFailed(msg)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if (queue_max_msg_size and"},{"line_number":185,"context_line":"                queue_max_msg_size \u003e self._limits_conf.max_messages_post_size):"},{"line_number":186,"context_line":"                raise ValidationFailed("},{"line_number":187,"context_line":"                    _(u\u0027_max_messages_post_size is too large. \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_7c15359a","line":184,"updated":"2016-03-01 04:19:24.000000000","message":"I suddenly noticed that unlike queue_default_ttl, queue_max_msg_size is not limited from the bottom. So it\u0027s possible to pass, for example, {\"_max_messages_post_size\": -1} as metadata. I don\u0027t think it\u0027s good.","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"9dd6888e38ee890fc2932e3fa09a434c36881b8f","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            msg \u003d _(u\u0027_max_messages_post_size must be integer.\u0027)"},{"line_number":182,"context_line":"            raise ValidationFailed(msg)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if (queue_max_msg_size and"},{"line_number":185,"context_line":"                queue_max_msg_size \u003e self._limits_conf.max_messages_post_size):"},{"line_number":186,"context_line":"                raise ValidationFailed("},{"line_number":187,"context_line":"                    _(u\u0027_max_messages_post_size is too large. \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_7825daa9","line":184,"in_reply_to":"7af24918_7fcae4a2","updated":"2016-03-01 21:15:55.000000000","message":"I don\u0027t see how this situation is handled at line 227...\n\nIf, for example, a queue with attribute \"_max_messages_post_size\" \u003d -100 will be created, L227 will not be executed, because exception will be already thrown at L218.\n\nThat means no messages can be posted to such queue, as wanghao said.\n\nDo you want to allow user to create a queue with attribute \"_max_messages_post_size\" with negative or zero value?","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"0731ffec6b605814343ad7c82f40197044df5c50","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            msg \u003d _(u\u0027_max_messages_post_size must be integer.\u0027)"},{"line_number":182,"context_line":"            raise ValidationFailed(msg)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if (queue_max_msg_size and"},{"line_number":185,"context_line":"                queue_max_msg_size \u003e self._limits_conf.max_messages_post_size):"},{"line_number":186,"context_line":"                raise ValidationFailed("},{"line_number":187,"context_line":"                    _(u\u0027_max_messages_post_size is too large. \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_7fcae4a2","line":184,"in_reply_to":"9aed3d3a_649f5b5f","updated":"2016-03-01 20:56:36.000000000","message":"No, it will be handled at line 227","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"fd5892fc29921666cf3fd4c2e3735a5ab8a5bab7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            msg \u003d _(u\u0027_max_messages_post_size must be integer.\u0027)"},{"line_number":182,"context_line":"            raise ValidationFailed(msg)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if (queue_max_msg_size and"},{"line_number":185,"context_line":"                queue_max_msg_size \u003e self._limits_conf.max_messages_post_size):"},{"line_number":186,"context_line":"                raise ValidationFailed("},{"line_number":187,"context_line":"                    _(u\u0027_max_messages_post_size is too large. \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_649f5b5f","line":184,"in_reply_to":"9aed3d3a_7c15359a","updated":"2016-03-01 06:39:08.000000000","message":"I think it\u0027s fine, because Zaqar make message length validation before posting message, so if \"_max_messages_post_size\" is -1 or 0, user will can\u0027t post any message.","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"}],"zaqar/transport/wsgi/v2_0/messages.py":[{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"            ttl_queue \u003d queue_meta.get(\u0027_default_message_ttl\u0027, None)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            if ttl_queue:"},{"line_number":176,"context_line":"                self._message_post_spec \u003d ((\u0027ttl\u0027, int, ttl_queue),"},{"line_number":177,"context_line":"                                           (\u0027body\u0027, \u0027*\u0027, None),)"},{"line_number":178,"context_line":"            # Place JSON size restriction before parsing"},{"line_number":179,"context_line":"            self._validate.message_length(req.content_length,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_1c649847","line":176,"range":{"start_line":176,"start_character":16,"end_line":176,"end_character":39},"updated":"2016-02-25 02:42:28.000000000","message":"Assigning new value to instance variable here is evil. \u003d)\nProof: http://paste.openstack.org/show/38Qlmu5UfcFDfQQ2xrMV/\nPlease figure out another way.","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"574152ab0149eff61588dd86f7772668779b06c4","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            max_msg_size_queue \u003d queue_meta.get(\u0027_max_messages_post_size\u0027,"},{"line_number":175,"context_line":"                                                None)"},{"line_number":176,"context_line":"            ttl_queue \u003d queue_meta.get(\u0027_default_message_ttl\u0027, None)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if ttl_queue:"},{"line_number":179,"context_line":"                min_ttl \u003d min(ttl_queue, self._default_message_ttl)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_b33f54d5","line":176,"range":{"start_line":176,"start_character":12,"end_line":176,"end_character":21},"updated":"2016-02-27 01:50:11.000000000","message":"NIT: rename it to \"queue_default_ttl\" or \"default_queue_ttl\", so it would be easier to understand the code.","commit_id":"f4806aa6cdbfda0d51516e541de1b76e721ee3b2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"574152ab0149eff61588dd86f7772668779b06c4","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                                None)"},{"line_number":176,"context_line":"            ttl_queue \u003d queue_meta.get(\u0027_default_message_ttl\u0027, None)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if ttl_queue:"},{"line_number":179,"context_line":"                min_ttl \u003d min(ttl_queue, self._default_message_ttl)"},{"line_number":180,"context_line":"                self._message_post_spec \u003d ((\u0027ttl\u0027, int, min_ttl),"},{"line_number":181,"context_line":"                                           (\u0027body\u0027, \u0027*\u0027, None),)"},{"line_number":182,"context_line":"            else:"},{"line_number":183,"context_line":"                self._message_post_spec \u003d ((\u0027ttl\u0027, int,"},{"line_number":184,"context_line":"                                            self._default_message_ttl),"},{"line_number":185,"context_line":"                                           (\u0027body\u0027, \u0027*\u0027, None),)"},{"line_number":186,"context_line":"            # Place JSON size restriction before parsing"},{"line_number":187,"context_line":"            self._validate.message_length(req.content_length,"},{"line_number":188,"context_line":"                                          max_msg_post_size\u003dmax_msg_size_queue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_13dd60e0","line":185,"range":{"start_line":178,"start_character":0,"end_line":185,"end_character":64},"updated":"2016-02-27 01:50:11.000000000","message":"Problems:\n\n1. It\u0027s wrong to choose min ttl at L179. Even if self.default_message_ttl is bigger, we still need to choose ttl_queue.\n\nInstead we can check if ttl_queue exceeds server\u0027s max_message_ttl. If yes, use server\u0027s max_message_ttl. If no, use ttl_queue. But I\u0027m not sure if it\u0027s good to get server\u0027s max_message_ttl from self._validate object.\nOr, as alternative, we can make queue\u0027s _default_message_ttl equal to server\u0027s max_message_ttl each time we notice it\u0027s bigger. But I\u0027m also not sure if it\u0027s good.\n\n2. Assigning new value to self._message_post_spec still doesn\u0027t seem right and it\u0027s not DRYed. Though the code works.\n\n\nPossible solution to both problems:\n\nif ttl_queue:\n    server_max_ttl_size \u003d self._validate.get_max_allowed_ttl()\n    if ttl_queue \u003c\u003d server_max_ttl_size:\n\tdefault_ttl_to_use \u003d ttl_queue\n    else:\n\tdefault_ttl_to_use \u003d server_max_ttl_size\n    message_post_spec \u003d ((\u0027ttl\u0027, int, default_ttl_to_use),\n\t\t\t (\u0027body\u0027, \u0027*\u0027, None),)\nelse:\n    message_post_spec \u003d self._message_post_spec\n\nYou need to write getter self._validate.get_max_allowed_ttl(). But as I said I\u0027m not sure if it\u0027s good to use Validator object like this.\nAnd also need to pass message_post_spec to L201 (wsgi_utils.sanitize method).","commit_id":"f4806aa6cdbfda0d51516e541de1b76e721ee3b2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"95e260ce63dd5c98dd66420b8b5b1feebbca3bad","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            queue_default_ttl \u003d queue_meta.get(\u0027_default_message_ttl\u0027, None)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if queue_default_ttl:"},{"line_number":179,"context_line":"                self._message_post_spec \u003d ((\u0027ttl\u0027, int, queue_default_ttl),"},{"line_number":180,"context_line":"                                           (\u0027body\u0027, \u0027*\u0027, None),)"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                self._message_post_spec \u003d ((\u0027ttl\u0027, int,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_12c37aee","line":179,"range":{"start_line":179,"start_character":16,"end_line":179,"end_character":41},"updated":"2016-02-29 01:51:05.000000000","message":"NIT: okay, we can keep it like this.;)\nI was just unsure that \"on_post\" method always executes in single thread and was scared of potential race condition.","commit_id":"f87ada73394ab372d11ec6c9627b12ccaf704bc7"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"7fc8e56cf7e0a9f2d366416146a034b9e28189ef","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            # leave the _message_post_spec attribute of class as it\u0027s. It"},{"line_number":180,"context_line":"            # should be removed in Newton release."},{"line_number":181,"context_line":"            if queue_default_ttl:"},{"line_number":182,"context_line":"                message_post_spec \u003d ((\u0027ttl\u0027, int, queue_default_ttl),"},{"line_number":183,"context_line":"                                     (\u0027body\u0027, \u0027*\u0027, None),)"},{"line_number":184,"context_line":"            else:"},{"line_number":185,"context_line":"                message_post_spec \u003d ((\u0027ttl\u0027, int, self._default_message_ttl),"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_308bd169","line":182,"updated":"2016-03-01 04:19:24.000000000","message":"Thank you, this looks nice.","commit_id":"e2c77e5bd79fc70d64272e3ab09f415c0442ebe2"}],"zaqar/transport/wsgi/v2_0/queues.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"0bb3060dc9ade6be555ca00189b77c668c345b0d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            LOG.exception(ex)"},{"line_number":84,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":85,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":86,"context_line":"            LOG.debug(ex)"},{"line_number":87,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":88,"context_line":"        except Exception as ex:"},{"line_number":89,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a54edaf_92af227d","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":25},"updated":"2016-02-13 08:59:50.000000000","message":"Feel Log.exception is better, like #83 and #89.","commit_id":"32f44fc0d3a722c84dbbbf2d86e1a0d5de9199d2"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"811d848b628b03f34782c1b13889ba73bf39eb84","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            LOG.exception(ex)"},{"line_number":84,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":85,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":86,"context_line":"            LOG.debug(ex)"},{"line_number":87,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":88,"context_line":"        except Exception as ex:"},{"line_number":89,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_7995023f","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":25},"in_reply_to":"1a54edaf_92af227d","updated":"2016-02-14 20:11:25.000000000","message":"Make sense for me, thanks.","commit_id":"32f44fc0d3a722c84dbbbf2d86e1a0d5de9199d2"},{"author":{"_account_id":18683,"name":"Eva Balycheva","email":"ubershy@gmail.com","username":"eva"},"change_message_id":"f0b74c22591d4c1f62afece62b4c011f1a82b60d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            LOG.exception(ex)"},{"line_number":84,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":85,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":86,"context_line":"            LOG.exception(ex)"},{"line_number":87,"context_line":"            raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex))"},{"line_number":88,"context_line":"        except Exception as ex:"},{"line_number":89,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_e1bdd2d8","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":25},"updated":"2016-02-25 02:42:28.000000000","message":"Please replace it back to \"debug\".\nThis line is different from lines #83 and #89, because they are intended to tell cloud administrator that something is wrong with Zaqar or system.\n\nLOG.exception produces log message at \"error\" level. Log messages at \"error\" level should tell cloud administrator that something is wrong with Zaqar or system. See: https://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#definition-of-log-levels\nWhen the client\u0027s request doesn\u0027t pass validation, it\u0027s not fault of Zaqar. It\u0027s fault of the client side. So we should not use LOG.exception to bother cloud administrator.","commit_id":"dd1f570ac33c2a999f7593841b0e3ef22e4d2f65"}]}
