)]}'
{"os_ken/lib/bfdlib.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"611e7c8e3753ef87cef16a40d20c178c8d14c4d4","unresolved":true,"context_lines":[{"line_number":857,"context_line":""},{"line_number":858,"context_line":"        return my_discr"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    def remove_kill_bfd_session(self, discr):"},{"line_number":861,"context_line":"        if discr in self.session:"},{"line_number":862,"context_line":"            hub.kill(self.session[discr].thread)"},{"line_number":863,"context_line":"            self.session.pop(discr, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2ae63d87_070101bc","line":860,"updated":"2021-03-15 13:04:12.000000000","message":"I think this is not the correct approach.\n\nWe need:\n1) To provide this functionality in BFDSession.\nWe need to be able to stop the \"_send_loop\" spawned thread, but this should be implemented in BFDSession class. For example, when the object is deleted or calling another method.\n\n2) BFDLib should implement a method to delete the session. Here in BFDLib we create a BDF session instantiating a BFDSession object. We should be able to delete this object from \"self.session\" (as you do) and when the object is deleted, the thread should be finished.","commit_id":"e1ee297d9a55a8e21b34ad229944e0766f2b783c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cb351e1f0d2d2816cf87baddcf73be911d49b052","unresolved":false,"context_lines":[{"line_number":857,"context_line":""},{"line_number":858,"context_line":"        return my_discr"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    def remove_kill_bfd_session(self, discr):"},{"line_number":861,"context_line":"        if discr in self.session:"},{"line_number":862,"context_line":"            hub.kill(self.session[discr].thread)"},{"line_number":863,"context_line":"            self.session.pop(discr, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8799cbb7_a93bb2ac","line":860,"in_reply_to":"172df0f1_39354e69","updated":"2021-03-16 10:39:16.000000000","message":"Done","commit_id":"e1ee297d9a55a8e21b34ad229944e0766f2b783c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4e1543bf7f721898670cb6729892b850c75a36e7","unresolved":true,"context_lines":[{"line_number":857,"context_line":""},{"line_number":858,"context_line":"        return my_discr"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    def remove_kill_bfd_session(self, discr):"},{"line_number":861,"context_line":"        if discr in self.session:"},{"line_number":862,"context_line":"            hub.kill(self.session[discr].thread)"},{"line_number":863,"context_line":"            self.session.pop(discr, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"172df0f1_39354e69","line":860,"in_reply_to":"2ae63d87_070101bc","updated":"2021-03-15 15:25:32.000000000","message":"Agree. A method like \"kill\" in BFDSession sounds reasonable. Perhaps the \"kill\" method in BFDSession call hub.kill(self.thread) and   self.session[discr].kill() can be called here.","commit_id":"e1ee297d9a55a8e21b34ad229944e0766f2b783c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d2db83d4dc9b1bf394bcb56cc3078c3c4850ce91","unresolved":true,"context_lines":[{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    def remove_kill_bfd_session(self, discr):"},{"line_number":861,"context_line":"        if discr in self.session:"},{"line_number":862,"context_line":"            hub.kill(self.session[discr].thread)"},{"line_number":863,"context_line":"            self.session.pop(discr, None)"},{"line_number":864,"context_line":"            LOG.info(\"[BFD][%s][STOP] Session %s is stopped now!\","},{"line_number":865,"context_line":"                     hex(discr), discr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"312c799f_88ec821b","line":862,"range":{"start_line":862,"start_character":12,"end_line":862,"end_character":48},"updated":"2021-03-15 13:08:48.000000000","message":"After killing a thread, add a wait() method to ensure it ends.\n\nhub.kill(self.session[discr].thread)\nhub.joinall([self.session[discr].thread])","commit_id":"e1ee297d9a55a8e21b34ad229944e0766f2b783c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"cb351e1f0d2d2816cf87baddcf73be911d49b052","unresolved":false,"context_lines":[{"line_number":859,"context_line":""},{"line_number":860,"context_line":"    def remove_kill_bfd_session(self, discr):"},{"line_number":861,"context_line":"        if discr in self.session:"},{"line_number":862,"context_line":"            hub.kill(self.session[discr].thread)"},{"line_number":863,"context_line":"            self.session.pop(discr, None)"},{"line_number":864,"context_line":"            LOG.info(\"[BFD][%s][STOP] Session %s is stopped now!\","},{"line_number":865,"context_line":"                     hex(discr), discr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4534cb4d_ace70b20","line":862,"range":{"start_line":862,"start_character":12,"end_line":862,"end_character":48},"in_reply_to":"312c799f_88ec821b","updated":"2021-03-16 10:39:16.000000000","message":"Done","commit_id":"e1ee297d9a55a8e21b34ad229944e0766f2b783c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9c55040e723477e73e1fc3cf7a3e1e25ce028396","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        Kill the current session\u0027s thread."},{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        hub.kill(self.thread)"},{"line_number":221,"context_line":"        hub.joinall(self.thread)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def set_remote_addr(self, dst_mac, dst_ip):"},{"line_number":224,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ed92f7e_57f25171","line":221,"range":{"start_line":221,"start_character":20,"end_line":221,"end_character":31},"updated":"2021-03-17 23:38:05.000000000","message":"joinall() accepts \"threads\" (a list of threads), so I think it should be [self.thread].","commit_id":"d668f4ad8b07b9e2280eaf9a53ebf23617c89bb7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e3712afab682c4c84947e272c489e3ad80980c45","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        Kill the current session\u0027s thread."},{"line_number":219,"context_line":"        \"\"\""},{"line_number":220,"context_line":"        hub.kill(self.thread)"},{"line_number":221,"context_line":"        hub.joinall(self.thread)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def set_remote_addr(self, dst_mac, dst_ip):"},{"line_number":224,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"b5ffdea7_88486364","line":221,"range":{"start_line":221,"start_character":20,"end_line":221,"end_character":31},"in_reply_to":"9ed92f7e_57f25171","updated":"2021-03-18 08:22:58.000000000","message":"You are right, thanks,","commit_id":"d668f4ad8b07b9e2280eaf9a53ebf23617c89bb7"}]}
