)]}'
{"dragonflow/db/pubsub_drivers/zmq_pubsub_driver.py":[{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"66b0724bcecba6055ed19d6b161b571b6cf8ce5e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    def register_topic(self, topic):"},{"line_number":154,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_topic(topic)"},{"line_number":155,"context_line":"        if is_new and self.sub_socket:"},{"line_number":156,"context_line":"            topic \u003d topic.encode(\u0027ascii\u0027, \u0027ignore\u0027)"},{"line_number":157,"context_line":"            self.sub_socket.setsockopt(zmq.SUBSCRIBE, topic)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def unregister_topic(self, topic):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_a7ef1286","line":156,"updated":"2016-04-13 14:20:28.000000000","message":"you can just encode the topic in the first line and then use this to call register_topic (and remove the code that encode it again in super.register_topic.\n\nBut not critical..","commit_id":"e97592b953b2fa7a5f915dab1614c7a836edac83"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"27df0826681fd9fe2e1975111bf7f1abd963d0c8","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.sub_socket \u003d None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def register_listen_address(self, uri):"},{"line_number":139,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_listen_address("},{"line_number":140,"context_line":"                    uri)"},{"line_number":141,"context_line":"        if is_new and self.sub_socket:"},{"line_number":142,"context_line":"            self.sub_socket.connect(uri)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_bed627c3","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":22},"updated":"2016-04-18 02:20:36.000000000","message":"Here may be concurrency problem. Imaging when subscriber.run is runing in a thread, the register_listen_address is called due to a new publisher online (it may be new neutron server), the url_list will be accessed by two threads simultaneously, one is writing, one is reading.","commit_id":"e166871634fbe0b7bb88c9a4686e61c02c42e84c"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"0ef990949d7dbf19978d65fddbd472f5ac29c25b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.sub_socket \u003d None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def register_listen_address(self, uri):"},{"line_number":139,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_listen_address("},{"line_number":140,"context_line":"                    uri)"},{"line_number":141,"context_line":"        if is_new and self.sub_socket:"},{"line_number":142,"context_line":"            self.sub_socket.connect(uri)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_a8b6c3d9","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":22},"in_reply_to":"1a122d0e_22e35007","updated":"2016-04-24 14:59:31.000000000","message":"Consider opening a bug about this issue. This way it won\u0027t be missed. @duankebo: Would that suffice?","commit_id":"e166871634fbe0b7bb88c9a4686e61c02c42e84c"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"7e6c173696795dd9ce01ad782bde41c66415ed23","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.sub_socket \u003d None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def register_listen_address(self, uri):"},{"line_number":139,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_listen_address("},{"line_number":140,"context_line":"                    uri)"},{"line_number":141,"context_line":"        if is_new and self.sub_socket:"},{"line_number":142,"context_line":"            self.sub_socket.connect(uri)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_f24d619a","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":22},"in_reply_to":"1a122d0e_a8b6c3d9","updated":"2016-05-08 12:48:47.000000000","message":"@Duankebo not please respond, we do not need a lock here as it is single process using non-preemptive multitasking","commit_id":"e166871634fbe0b7bb88c9a4686e61c02c42e84c"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"1e1e0942584fc949b654baac43c77a9ede0186f8","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.sub_socket \u003d None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def register_listen_address(self, uri):"},{"line_number":139,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_listen_address("},{"line_number":140,"context_line":"                    uri)"},{"line_number":141,"context_line":"        if is_new and self.sub_socket:"},{"line_number":142,"context_line":"            self.sub_socket.connect(uri)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_22e35007","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":22},"in_reply_to":"1a122d0e_bed627c3","updated":"2016-04-21 13:33:40.000000000","message":"As we are using  non-preemptive multitasking (Cooperative multitasking the eventlet therad)and this issue that you are talking about is the local controller only I do not think it is an issue.\n\nWe could add a lock in later patches but it will be needed only when we move to different threading module (if we do move)","commit_id":"e166871634fbe0b7bb88c9a4686e61c02c42e84c"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"a64208a9f690bfa45d481e8d8f77d0058142c960","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.sub_socket \u003d None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def register_listen_address(self, uri):"},{"line_number":139,"context_line":"        is_new \u003d super(ZMQSubscriberAgentBase, self).register_listen_address("},{"line_number":140,"context_line":"                    uri)"},{"line_number":141,"context_line":"        if is_new and self.sub_socket:"},{"line_number":142,"context_line":"            self.sub_socket.connect(uri)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_160a8721","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":22},"in_reply_to":"dab17558_f24d619a","updated":"2016-05-09 10:50:25.000000000","message":"It\u0027s ok for green thread","commit_id":"e166871634fbe0b7bb88c9a4686e61c02c42e84c"}],"dragonflow/tests/fullstack/test_pub_sub.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"69c999767bd355db9aa79b1f59c8bad9b5aeb413","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        update.action \u003d action"},{"line_number":267,"context_line":"        update.topic \u003d SEND_ALL_TOPIC"},{"line_number":268,"context_line":"        self.events_action_t \u003d None"},{"line_number":269,"context_line":"        publisher.send_event(update)"},{"line_number":270,"context_line":"        eventlet.sleep(1)"},{"line_number":271,"context_line":"        self.assertEqual(ns.events_action, action)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_e51779eb","line":268,"range":{"start_line":268,"start_character":0,"end_line":268,"end_character":35},"updated":"2016-04-17 05:22:27.000000000","message":"Is this line necessary here?","commit_id":"ba744007a433006b3335d3459d9110444e1ba2c7"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"e2fea93b06e9d8b770fe2c2d3c393fa8b0fbef1b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        )"},{"line_number":266,"context_line":"        update.action \u003d action"},{"line_number":267,"context_line":"        update.topic \u003d SEND_ALL_TOPIC"},{"line_number":268,"context_line":"        self.events_action_t \u003d None"},{"line_number":269,"context_line":"        publisher.send_event(update)"},{"line_number":270,"context_line":"        eventlet.sleep(1)"},{"line_number":271,"context_line":"        self.assertEqual(ns.events_action, action)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_cfe25703","line":268,"range":{"start_line":268,"start_character":0,"end_line":268,"end_character":35},"in_reply_to":"1a122d0e_e51779eb","updated":"2016-04-17 12:42:50.000000000","message":"thx should be _action","commit_id":"ba744007a433006b3335d3459d9110444e1ba2c7"}]}
