)]}'
{"neutron/agent/linux/dhcp.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"80ab017847e51fcc51be64e67e658861bd5c8727","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        if not ns_ip.netns.exists(self.network.namespace):"},{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_4e8edad0","line":244,"updated":"2016-09-26 21:01:01.000000000","message":"In the DHCP agent everything is protected by the \u0027dhcp-agent\u0027 lock. If something deletes the namespace between L241 and L245 it\u0027s an external process and is still worth logging a warning.","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d91c4e882971f41c24fdeec0cdd8bd8f5d9d72ff","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        if not ns_ip.netns.exists(self.network.namespace):"},{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_13c6db99","line":244,"updated":"2016-09-26 13:43:01.000000000","message":"there is still place for a race: it was there when you checked in line 241, but now it\u0027s not when you call delete for it in line 245. Shouldn\u0027t you better log in line 247 only when the namespace exists AFTER RuntimeError happened?","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"95d9567b5e4368ecf377aa840736f99a10b9f435","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        if not ns_ip.netns.exists(self.network.namespace):"},{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_dc65201e","line":244,"in_reply_to":"5a8bc5a2_4e8edad0","updated":"2016-09-27 13:14:40.000000000","message":"I see.","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6d654812ea519314f8444cb1d0116be0947cc437","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"},{"line_number":248,"context_line":"                        self.network.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_aa09d496","line":245,"range":{"start_line":245,"start_character":24,"end_line":245,"end_character":30},"updated":"2016-09-27 17:08:13.000000000","message":"Would it make more sense to check if the ns exists right in the delete() call so other consumers can reap the benefits rather than just handling in this one particular case?","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"489bb4907c033c97410a4a4d9257d577ed151af8","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"},{"line_number":248,"context_line":"                        self.network.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_bcbc12bc","line":245,"range":{"start_line":245,"start_character":24,"end_line":245,"end_character":30},"in_reply_to":"3a98d1f4_2cc77413","updated":"2016-10-01 11:17:38.000000000","message":"I think in most cases we don\u0027t want to silently ignore the fact that a namespace did not exist when we requested to delete it. It can unintentionally mask issues where the caller thinks that the namespace exists when it really doesn\u0027t.","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4a74b3a05426e25b1442a35156050bdfb5ae6ba3","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            LOG.debug(\"Namespace already deleted: %s\", self.network.namespace)"},{"line_number":243,"context_line":"            return"},{"line_number":244,"context_line":"        try:"},{"line_number":245,"context_line":"            ns_ip.netns.delete(self.network.namespace)"},{"line_number":246,"context_line":"        except RuntimeError:"},{"line_number":247,"context_line":"            LOG.warning(_LW(\u0027Failed trying to delete namespace: %s\u0027),"},{"line_number":248,"context_line":"                        self.network.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_2cc77413","line":245,"range":{"start_line":245,"start_character":24,"end_line":245,"end_character":30},"in_reply_to":"5a8bc5a2_aa09d496","updated":"2016-09-29 06:27:28.000000000","message":"Most cases don\u0027t need to check the namespace when delete. It\u0027s also system call so it\u0027s high cost. Therefore, I disagree that namespace is checked whenever delete() is called.","commit_id":"98de72e9f32090a93c9c1b6f45cc0f2385c27792"}]}
