)]}'
{"neutron/agent/windows/winutils.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"df9aa0d112327dc694f07774591d0f18a9ca3598","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\"Returns the file handle.\"\"\""},{"line_number":352,"context_line":"        return self._npipe_file"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def __del__(self):"},{"line_number":355,"context_line":"        \"\"\"Clean all the handles used.\"\"\""},{"line_number":356,"context_line":"        if hasattr(self, \"namedpipe\") and self.namedpipe:"},{"line_number":357,"context_line":"            ovs_winutils.close_handle(self.namedpipe)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_a69aceb5","line":354,"updated":"2017-04-21 08:07:24.000000000","message":"this is just backup protection if something doesn\u0027t explicitly close right? relying on __del__ leads to the unpredictability of the garbage collector","commit_id":"a90ad29d594b02cf4ea0c467561c4cbb20c2eb71"},{"author":{"_account_id":17019,"name":"Alin Balutoiu","email":"abalutoiu@cloudbasesolutions.com","username":"abalutoiu"},"change_message_id":"d623ed3451424b169fd651e43be34060913519fd","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\"Returns the file handle.\"\"\""},{"line_number":352,"context_line":"        return self._npipe_file"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def __del__(self):"},{"line_number":355,"context_line":"        \"\"\"Clean all the handles used.\"\"\""},{"line_number":356,"context_line":"        if hasattr(self, \"namedpipe\") and self.namedpipe:"},{"line_number":357,"context_line":"            ovs_winutils.close_handle(self.namedpipe)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7ffa3b31_cc717baa","line":354,"in_reply_to":"7ffa3b31_a69aceb5","updated":"2017-04-21 09:12:39.000000000","message":"Good point, added another function which is called explicitly to close all the handles and __del__ will just call that function as backup protection.","commit_id":"a90ad29d594b02cf4ea0c467561c4cbb20c2eb71"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"cb6936fbbab663871defc9fbf20d724e3b8cea1a","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\"Returns the file handle.\"\"\""},{"line_number":352,"context_line":"        return self._npipe_file"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def close_all_handles(self):"},{"line_number":355,"context_line":"        \"\"\"Close all the handles used by this class.\"\"\""},{"line_number":356,"context_line":"        if hasattr(self, \"namedpipe\") and self.namedpipe:"},{"line_number":357,"context_line":"            ovs_winutils.close_handle(self.namedpipe)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_0f7cf580","line":354,"updated":"2017-04-21 09:37:06.000000000","message":"just confirming, this is safe to call twice, right?","commit_id":"1ab4577a5f43478b852d7a57f3be4d42f5566a77"},{"author":{"_account_id":17019,"name":"Alin Balutoiu","email":"abalutoiu@cloudbasesolutions.com","username":"abalutoiu"},"change_message_id":"3cc5f8ab495832cb3aeba4a7bb6dbbe913f2a9fd","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        \"\"\"Returns the file handle.\"\"\""},{"line_number":352,"context_line":"        return self._npipe_file"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def close_all_handles(self):"},{"line_number":355,"context_line":"        \"\"\"Close all the handles used by this class.\"\"\""},{"line_number":356,"context_line":"        if hasattr(self, \"namedpipe\") and self.namedpipe:"},{"line_number":357,"context_line":"            ovs_winutils.close_handle(self.namedpipe)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_0fa755bf","line":354,"in_reply_to":"7ffa3b31_0f7cf580","updated":"2017-04-21 09:48:46.000000000","message":"Yep, this is safe to be called as many times as we want. Anyway once the handles are invalid the if condition will fail when called the second time.","commit_id":"1ab4577a5f43478b852d7a57f3be4d42f5566a77"}]}
