)]}'
{"oslo_messaging/_drivers/pika_driver/pika_engine.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"574b9a9ef72bc950bd98107bac8c480ebb4634fe","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            # should be removed after adding it to swift"},{"line_number":250,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":251,"context_line":"                from eventlet import patcher"},{"line_number":252,"context_line":"                patcher.monkey_patch(select\u003dTrue)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            _PID \u003d cur_pid"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"9a061dce_96337df6","line":252,"updated":"2016-04-08 10:17:39.000000000","message":"This is really too dangerous. And to late, monkey_patch should never be used at runtime, but only when modules are loaded otherwise you can be in the situation of some select method are patch and some other not.","commit_id":"9186232a8fde2f422fb8e170ef6e8bb21fed2f46"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"50ab2cb6095300061872301e5fc505dba09d5ebb","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            # should be removed after adding it to swift"},{"line_number":250,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":251,"context_line":"                from eventlet import patcher"},{"line_number":252,"context_line":"                patcher.monkey_patch(select\u003dTrue)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"            _PID \u003d cur_pid"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"9a061dce_d68df52b","line":252,"in_reply_to":"9a061dce_96337df6","updated":"2016-04-08 10:26:43.000000000","message":"I agree with you. I don\u0027t think that it is dangerous in current case but in general it is  bad practice. For now it is on to allow to pass pipeline tests. Because without select patching new connection\u0027s thread will block all other greenbelts on select call. Please go forward with reviewing this patch and I will create patch to swift to enable select patching there","commit_id":"9186232a8fde2f422fb8e170ef6e8bb21fed2f46"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e0cdb1ece93cc51627434d670a55ca7e185ecde4","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                \"Whoops, this kernel doesn\u0027t seem to support TCP_USER_TIMEOUT.\""},{"line_number":237,"context_line":"            )"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def _init_if_needed(self):"},{"line_number":240,"context_line":"        global _PID"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        cur_pid \u003d os.getpid()"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_212cd749","line":239,"updated":"2016-04-11 12:25:38.000000000","message":"I really sad to see this, that means the application fork the process after starting playing with API...\n\nThis clearly detects broken applications. ( I guess it\u0027s still neutron ;) )","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"c0dd5c8d37176fad549ce97e4d3a3f5f057b7f23","unresolved":false,"context_lines":[{"line_number":236,"context_line":"                \"Whoops, this kernel doesn\u0027t seem to support TCP_USER_TIMEOUT.\""},{"line_number":237,"context_line":"            )"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def _init_if_needed(self):"},{"line_number":240,"context_line":"        global _PID"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        cur_pid \u003d os.getpid()"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_dda3439d","line":239,"in_reply_to":"7a1b2928_212cd749","updated":"2016-04-11 14:03:24.000000000","message":"Yes, my patch to newtron with fix is still not merged and newtron folks don\u0027t want/don\u0027t have time to review it.","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e0cdb1ece93cc51627434d670a55ca7e185ecde4","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            # should be removed after adding it to swift"},{"line_number":250,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":251,"context_line":"                from pika.adapters import select_connection"},{"line_number":252,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"                from eventlet import patcher"},{"line_number":255,"context_line":"                patcher.monkey_patch(select\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_212b37ed","line":252,"updated":"2016-04-11 12:25:38.000000000","message":"Why do we enforce the usage of select, when the platform support epoll ? That doesn\u0027t looks a good and efficient idea.\n\n\nI\u0027m already afraid by your answer/finding about this :(.\n\nI known that previous code was already doing this, I just want some clarification in the source code to help to find a better solution in the futur.","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"c0dd5c8d37176fad549ce97e4d3a3f5f057b7f23","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            # should be removed after adding it to swift"},{"line_number":250,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":251,"context_line":"                from pika.adapters import select_connection"},{"line_number":252,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"                from eventlet import patcher"},{"line_number":255,"context_line":"                patcher.monkey_patch(select\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_fdb6ff3b","line":252,"in_reply_to":"7a1b2928_212b37ed","updated":"2016-04-11 14:03:24.000000000","message":"if thread is monkey patched this means that we use greenlets only and our threads switch each other when thread is finished or some method requests IO operation, like time.sleep, socket.read or select.select. But it works when these methods are patched and uses eventlet implementations. Unfortunately eventlet patches only select.select call and poll/epoll calls are not patched and blocks execution during timeout. Therefore we can not use poll/epoll when thread is patched by eventlet. If we don\u0027t use patching and create native thread for handling connection\u0027s ioloop - it is possible to use poll/epoll","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e0cdb1ece93cc51627434d670a55ca7e185ecde4","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"                from eventlet import patcher"},{"line_number":255,"context_line":"                patcher.monkey_patch(select\u003dTrue)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"            _PID \u003d cur_pid"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_c1eec3eb","line":255,"updated":"2016-04-11 12:25:38.000000000","message":"I still not confortable about this. Perhaps we can add a LOG.warning() about this this.","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"c0dd5c8d37176fad549ce97e4d3a3f5f057b7f23","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"                from eventlet import patcher"},{"line_number":255,"context_line":"                patcher.monkey_patch(select\u003dTrue)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"            _PID \u003d cur_pid"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_3abfddd1","line":255,"in_reply_to":"7a1b2928_c1eec3eb","updated":"2016-04-11 14:03:24.000000000","message":"We need to remove it when patching in swift will be merged\nhttps://review.openstack.org/#/c/303401/","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"6cb94626f5d9ada9caee3addd225d0aaaec446f9","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            # implementation does not support patching of poll/epoll/kqueue"},{"line_number":251,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":252,"context_line":"                from pika.adapters import select_connection"},{"line_number":253,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            _PID \u003d cur_pid"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":65,"id":"1a122d0e_01f98d80","line":253,"updated":"2016-04-27 13:37:16.000000000","message":"I\u0027m still sad about this. But anyways let\u0027s keep this for now.","commit_id":"4275044b0d03197ec025ef9215ffd9b2bc30fa60"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"3054322c69f5b2c3368b32f0cf7e7bce7b08f76c","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            # implementation does not support patching of poll/epoll/kqueue"},{"line_number":251,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":252,"context_line":"                from pika.adapters import select_connection"},{"line_number":253,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            _PID \u003d cur_pid"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":65,"id":"1a122d0e_9a7e60e2","line":253,"in_reply_to":"1a122d0e_01f98d80","updated":"2016-04-27 14:22:14.000000000","message":"ok, as alternative I can suggest to use native thread for connection in spite of monkey_patching thread","commit_id":"4275044b0d03197ec025ef9215ffd9b2bc30fa60"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"4d3b5d3c6de36d2fbff0f39125f5bd89ec5acae8","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            # implementation does not support patching of poll/epoll/kqueue"},{"line_number":251,"context_line":"            if pika_drv_cmns.is_eventlet_monkey_patched(\"thread\"):"},{"line_number":252,"context_line":"                from pika.adapters import select_connection"},{"line_number":253,"context_line":"                select_connection.SELECT_TYPE \u003d \"select\""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"            _PID \u003d cur_pid"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":65,"id":"1a122d0e_5f32f55e","line":253,"in_reply_to":"1a122d0e_9a7e60e2","updated":"2016-04-27 15:50:08.000000000","message":"Why not, but lets do that later, I\u0027m more impatient to see your driver with \"a single connection\", that looks promise.","commit_id":"4275044b0d03197ec025ef9215ffd9b2bc30fa60"}],"oslo_messaging/_drivers/pika_driver/pika_poller.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e0cdb1ece93cc51627434d670a55ca7e185ecde4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                    \"Connectivity exception during starting/recovering pika \""},{"line_number":174,"context_line":"                    \"poller %s\", e, exc_info\u003dTrue"},{"line_number":175,"context_line":"                )"},{"line_number":176,"context_line":"            except BaseException:"},{"line_number":177,"context_line":"                LOG.exception(\"Unexpected exception during \""},{"line_number":178,"context_line":"                              \"starting/recovering pika poller\")"},{"line_number":179,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_41cf53b0","line":176,"updated":"2016-04-11 12:25:38.000000000","message":"If you want to use BaseException instead of Exception, you must add a note with the reason.","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"},{"author":{"_account_id":8601,"name":"Dmitriy Ukhlov","email":"dukhlov@mirantis.com","username":"dukhlov"},"change_message_id":"c0dd5c8d37176fad549ce97e4d3a3f5f057b7f23","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                    \"Connectivity exception during starting/recovering pika \""},{"line_number":174,"context_line":"                    \"poller %s\", e, exc_info\u003dTrue"},{"line_number":175,"context_line":"                )"},{"line_number":176,"context_line":"            except BaseException:"},{"line_number":177,"context_line":"                LOG.exception(\"Unexpected exception during \""},{"line_number":178,"context_line":"                              \"starting/recovering pika poller\")"},{"line_number":179,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":58,"id":"7a1b2928_f01c6779","line":176,"in_reply_to":"7a1b2928_41cf53b0","updated":"2016-04-11 14:03:24.000000000","message":"Done","commit_id":"7111e55cf321b4047340f182066cc81e6f3de93b"}]}
