)]}'
{"swift/obj/replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"acee48192084a796d65e358d0ad563c39ca19610","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            for proc in procs:"},{"line_number":161,"context_line":"                # this will reap the process if it has exited, but"},{"line_number":162,"context_line":"                # otherwise will not wait"},{"line_number":163,"context_line":"                if proc.poll() is not None:"},{"line_number":164,"context_line":"                    reaped_procs.add(proc)"},{"line_number":165,"context_line":"            procs -\u003d reaped_procs"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_475dd8e7","line":163,"updated":"2018-04-04 19:49:40.000000000","message":"this seems like a better interface [1] for this job:\n\n  None value indicates that the process hasn’t terminated yet.\n\n1. https://docs.python.org/2/library/subprocess.html#subprocess.Popen.poll","commit_id":"f4cd39edfeee4f0892c09353912986c1afbd301d"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"acee48192084a796d65e358d0ad563c39ca19610","unresolved":false,"context_lines":[{"line_number":791,"context_line":"                    self.run_pool.spawn(self.update, job)"},{"line_number":792,"context_line":"            current_nodes \u003d None"},{"line_number":793,"context_line":"            self.run_pool.waitall()"},{"line_number":794,"context_line":"        except Exception:"},{"line_number":795,"context_line":"            if current_nodes:"},{"line_number":796,"context_line":"                self._add_failure_stats([(failure_dev[\u0027replication_ip\u0027],"},{"line_number":797,"context_line":"                                          failure_dev[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_c7680889","line":794,"updated":"2018-04-04 19:49:40.000000000","message":"ugh... are you SURE none of these calls will raise Timeout?  EVER?  Even if someone changes the code later!?  If it *does* happen where will Timeout be caught... looks like this *is* the Pokemon exception block... a Timeout from somewhere would hit the finally block and then cause the process to exit... \n\n... later ...\n\nI guess I\u0027m mostly convinced nothing is currently raising Timeout here, and there\u0027s other better (or at least equally good) places we could add generic catch all exception handling when we realize it is in fact needed.\n\nFTR, (Exception, Timeout) doesn\u0027t offend me in projects that use eventlet - in fact Exception by itself is generally a smell...","commit_id":"f4cd39edfeee4f0892c09353912986c1afbd301d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f2fdeb5964dccab514de88a30a51e00afa231c88","unresolved":false,"context_lines":[{"line_number":791,"context_line":"                    self.run_pool.spawn(self.update, job)"},{"line_number":792,"context_line":"            current_nodes \u003d None"},{"line_number":793,"context_line":"            self.run_pool.waitall()"},{"line_number":794,"context_line":"        except Exception:"},{"line_number":795,"context_line":"            if current_nodes:"},{"line_number":796,"context_line":"                self._add_failure_stats([(failure_dev[\u0027replication_ip\u0027],"},{"line_number":797,"context_line":"                                          failure_dev[\u0027device\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_adb6153e","line":794,"in_reply_to":"bf659307_c7680889","updated":"2018-04-04 19:59:10.000000000","message":"*shrug*\n\nEither way -- I\u0027d be happy to drop it.","commit_id":"f4cd39edfeee4f0892c09353912986c1afbd301d"}]}
