)]}'
{"dragonflow/db/drivers/ovsdb_vswitch_impl.py":[{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"7a0961c3b70464dd00f1416c03a206eb1b2b6e6c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.ovsdb \u003d connection.Connection(db_connection,"},{"line_number":49,"context_line":"                                           self.timeout,"},{"line_number":50,"context_line":"                                           self.db_name)"},{"line_number":51,"context_line":"        self.ovsdb.start()"},{"line_number":52,"context_line":"        self.idl \u003d self.ovsdb.idl"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_39867465","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":26},"updated":"2016-04-06 06:57:00.000000000","message":"It will monitor all the ovsdb tables here, how do you just monitor One table by unchange of neutron.agent.ovsdb.native.connection?","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9181d83e7a1060e69254c4192d01e3f0aa9c68b0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.ovsdb \u003d connection.Connection(db_connection,"},{"line_number":49,"context_line":"                                           self.timeout,"},{"line_number":50,"context_line":"                                           self.db_name)"},{"line_number":51,"context_line":"        self.ovsdb.start()"},{"line_number":52,"context_line":"        self.idl \u003d self.ovsdb.idl"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_6c45cc15","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":26},"in_reply_to":"9a061dce_39867465","updated":"2016-04-06 07:21:26.000000000","message":"As we discussed, this will be added in another patch.","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"15a6a18327a71cefaa2b7549861d059205467cea","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.ovsdb \u003d connection.Connection(db_connection,"},{"line_number":49,"context_line":"                                           self.timeout,"},{"line_number":50,"context_line":"                                           self.db_name)"},{"line_number":51,"context_line":"        self.ovsdb.start()"},{"line_number":52,"context_line":"        self.idl \u003d self.ovsdb.idl"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_ccb17891","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":26},"in_reply_to":"9a061dce_6c45cc15","updated":"2016-04-06 07:37:08.000000000","message":"I hope it can be done in this patch.","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"e0f18d5d95bdfb95fd08e3fa556a4d9e73cf0e56","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self.ovsdb \u003d connection.Connection(db_connection,"},{"line_number":49,"context_line":"                                           self.timeout,"},{"line_number":50,"context_line":"                                           self.db_name)"},{"line_number":51,"context_line":"        self.ovsdb.start()"},{"line_number":52,"context_line":"        self.idl \u003d self.ovsdb.idl"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_455ffbe4","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":26},"in_reply_to":"9a061dce_ccb17891","updated":"2016-04-06 08:28:33.000000000","message":"@duankebo I\u0027ll try to get it in today, but I would like to separate it so it will be easier to review.","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"7a0961c3b70464dd00f1416c03a206eb1b2b6e6c","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    def _is_handle_interface_update(self, interface):"},{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_390954de","line":255,"range":{"start_line":255,"start_character":8,"end_line":255,"end_character":70},"updated":"2016-04-06 06:57:00.000000000","message":"miss the sync_start and sync_finish message","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9181d83e7a1060e69254c4192d01e3f0aa9c68b0","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    def _is_handle_interface_update(self, interface):"},{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_cc4cd844","line":255,"range":{"start_line":255,"start_character":8,"end_line":255,"end_character":70},"in_reply_to":"9a061dce_390954de","updated":"2016-04-06 07:21:26.000000000","message":"Done","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"269c83115d25ebfa71773699e6df57f988315b84","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"},{"line_number":259,"context_line":"            self.nb_api.db_change_callback(table, key, action, local_interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_825c6eee","line":256,"updated":"2016-04-06 06:07:22.000000000","message":"Where do we check that this interface is from br-int?","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"239ecd98891e55e5a5058fd31d162a9dcab5410e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"},{"line_number":259,"context_line":"            self.nb_api.db_change_callback(table, key, action, local_interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_96a66f0e","line":256,"in_reply_to":"9a061dce_825c6eee","updated":"2016-04-06 06:30:02.000000000","message":"We don\u0027t. We heuristically check that the interface belongs to a vm. Checking that the interface belongs to br-int adds a lot of complications: The interface create event comes first, then the Port create, and then the Bridge update. So when the interface create event comes in, we don\u0027t know it belongs to br-int. We will have to \u0027hold\u0027 the event until the events from Port and Bridge tables come in.\n\nIf needed, I will add it to this patch, but I thought it adds needless complication, since we can differentiate vm interfaces from tunnel and patch interfaces.","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"621e31bd2d36f2505c0e2b7b708fcd10cd13c136","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"},{"line_number":259,"context_line":"            self.nb_api.db_change_callback(table, key, action, local_interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_b68573ae","line":256,"in_reply_to":"9a061dce_96a66f0e","updated":"2016-04-06 06:46:20.000000000","message":"The problem was that we see a port added that looks like a VM port but is added to br-ex (gateway router port connected from the namespace) so this doesnt solve it yet","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9181d83e7a1060e69254c4192d01e3f0aa9c68b0","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return interface.type \u003d\u003d constants.OVS_VM_INTERFACE"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def _notify_update_local_interface(self, local_interface, action):"},{"line_number":256,"context_line":"        if self._is_handle_interface_update(local_interface):"},{"line_number":257,"context_line":"            table \u003d constants.OVS_INTERFACE"},{"line_number":258,"context_line":"            key \u003d local_interface.uuid"},{"line_number":259,"context_line":"            self.nb_api.db_change_callback(table, key, action, local_interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a061dce_4c5f28e5","line":256,"in_reply_to":"9a061dce_b68573ae","updated":"2016-04-06 07:21:26.000000000","message":"I will test it. If it reproduces, I will add a fix to this patch.","commit_id":"fb77f5c93ee787a9c1a721b12ed7efd9b94f9d51"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"f4a83afc75f11077cd85aba3c053abfd2baff460","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_0a650bb4","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"updated":"2016-04-06 09:31:38.000000000","message":"sync_finished message must be notified after all exist ovs ports are notified, obviously, the code here can not implement this function","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"cfa83c3382d36e2f37123381d04331ef3fdf2964","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_4a38a33d","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_0a650bb4","updated":"2016-04-06 09:40:31.000000000","message":"current implementation will get the following result:\n\"sync_started\"\n\"sync_finished\"\n\"notify vm ports\"\nthat\u0027s not what we want.","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"753b014a922e3b080593dfbf729a45133af3b756","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_f927c5c7","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_1c51d136","updated":"2016-04-06 13:57:08.000000000","message":"I think the sync  finish is problematic\n\nHow do we know it is done ? \nFrom what we tested we see that it did not work correctly before this patch \n\nLets talk tomorrow and see if we can think of a better way to know that we have all the memory and we could delete the old flows","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"3d663893fc1678db63353c6cf448e09313e126db","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_fb1e796e","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_1c51d136","updated":"2016-04-07 02:35:26.000000000","message":"syn_started and sync_finished should be considered together, without correct sync_finished the solution is useless.\nIDL don\u0027t provide the interface to tell when all the messages have been notified, so it\u0027s impossible.","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"c265a2b0f3b056c2863cc4c352f8412335aa6a96","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_1c51d136","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_4a38a33d","updated":"2016-04-06 11:47:02.000000000","message":"After looking again at this code and logs - it appears that this event behaved the same way before the change. This can be seen here:\nhttp://logs.openstack.org/90/301490/5/check/gate-dragonflow-dsvm-fullstack-nv/01509ea/logs/screen-df-controller.txt.gz\nand here:\nhttp://logs.openstack.org/69/302069/1/check/gate-dragonflow-dsvm-fullstack-nv/68c4a0a/logs/screen-df-controller.txt.gz\n\nThe logs from this change are here:\nhttp://logs.openstack.org/91/301691/2/check/gate-dragonflow-dsvm-fullstack-nv/07d6308/logs/screen-df-controller.txt.gz\n\nThe sync_finished event happens at the same time compared with the poll-mode DB sync finish (4 seconds difference).\n\nI think this feature should be done differently, and elsewhere. I will remove it from here, and add it at a later patch (Once I figure out how to do this correctly).\n\nI don\u0027t want this change delayed because of that, because I don\u0027t think I\u0027ll be able to do it today.","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"d639a1b70a9a7f2ce7d4d85d03542e9aac4b7a50","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_3b01116b","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_f927c5c7","updated":"2016-04-07 02:05:41.000000000","message":"In previous patch, after ovsdb monitor process the monitor_reply message, it send the sync_finish message, It\u0027s ok because the reply message contains all the exist ovs port info, ovsdb monitor will put all the exist ovs ports online messages into the queue of nb_api, all the flow for the exist ports will contain the new generated cookie, and then Aging will delete old flows after receive sync_finish message, subsequent ovs port online apps will send flows by new cookie, I have test it In our Iterator 1st production Test with the code written by heshan(Aging module), It\u0027s ok in middle of March, while currently the Aging code has not beed merged yet. In current code, ovsdb.start() will return when the change_seqno is changed, maybe the monitor_reply message is the first message and it makes the change_seqno changed, but the finish_sync message is still notified too early because all the exist ovs ports may not be stored in the queue of nb_api, so it is a problem","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"},{"author":{"_account_id":20336,"name":"heshan","email":"shan.he@huawei.com","username":"shanhe"},"change_message_id":"3d663893fc1678db63353c6cf448e09313e126db","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.ovsdb_monitor \u003d OvsdbMonitor(self.nb_api, self.idl)"},{"line_number":57,"context_line":"        self.idl.notify \u003d self.ovsdb_monitor.notify"},{"line_number":58,"context_line":"        self.nb_api.db_change_callback(tbl, None, \"sync_finished\", None, None)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def transaction(self, check_error\u003dFalse, log_errors\u003dTrue, **kwargs):"},{"line_number":61,"context_line":"        return impl_idl.Transaction(self,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_1e9d1bbc","line":58,"range":{"start_line":58,"start_character":8,"end_line":58,"end_character":78},"in_reply_to":"9a061dce_f927c5c7","updated":"2016-04-07 02:35:26.000000000","message":"actually, it\u0027s worked before this patch, and it had been tested several weeks ago, reliability feature based on the notification mechanism is working now, details usage could be seen in the reliability patch.\nhttps://review.openstack.org/#/c/292060/24","commit_id":"472425ad351af242a32e55f3a352bc824e4873aa"}]}
