)]}'
{"swift/common/manager.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d144c7bbbf72085986f38bc42c30742868334990","unresolved":false,"context_lines":[{"line_number":664,"context_line":"                    if sig !\u003d signal.SIG_DFL:"},{"line_number":665,"context_line":"                        print(_(\u0027Signal %(server)s  pid: %(pid)s  signal: \u0027"},{"line_number":666,"context_line":"                                \u0027%(signal)s\u0027) %"},{"line_number":667,"context_line":"                              {\u0027server\u0027: self.server, \u0027pid\u0027: pid, \u0027signal\u0027: sig})"},{"line_number":668,"context_line":"                    safe_kill(pid, sig, \u0027swift-%s\u0027 % self.server)"},{"line_number":669,"context_line":"                except InvalidPidFileException:"},{"line_number":670,"context_line":"                    if kwargs.get(\u0027verbose\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_22022670","line":667,"updated":"2020-08-21 06:13:02.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"36c9a4427008af3196e1b09c1aa40ecc4ddb4ee4"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d144c7bbbf72085986f38bc42c30742868334990","unresolved":false,"context_lines":[{"line_number":668,"context_line":"                    safe_kill(pid, sig, \u0027swift-%s\u0027 % self.server)"},{"line_number":669,"context_line":"                except InvalidPidFileException:"},{"line_number":670,"context_line":"                    if kwargs.get(\u0027verbose\u0027):"},{"line_number":671,"context_line":"                        print(_(\u0027Removing pid file %(pid_file)s with wrong pid \u0027"},{"line_number":672,"context_line":"                                \u0027%(pid)d\u0027) % {\u0027pid_file\u0027: pid_file, \u0027pid\u0027: pid})"},{"line_number":673,"context_line":"                    remove_file(pid_file)"},{"line_number":674,"context_line":"                except OSError as e:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_82fa1272","line":671,"updated":"2020-08-21 06:13:02.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"36c9a4427008af3196e1b09c1aa40ecc4ddb4ee4"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d144c7bbbf72085986f38bc42c30742868334990","unresolved":false,"context_lines":[{"line_number":669,"context_line":"                except InvalidPidFileException:"},{"line_number":670,"context_line":"                    if kwargs.get(\u0027verbose\u0027):"},{"line_number":671,"context_line":"                        print(_(\u0027Removing pid file %(pid_file)s with wrong pid \u0027"},{"line_number":672,"context_line":"                                \u0027%(pid)d\u0027) % {\u0027pid_file\u0027: pid_file, \u0027pid\u0027: pid})"},{"line_number":673,"context_line":"                    remove_file(pid_file)"},{"line_number":674,"context_line":"                except OSError as e:"},{"line_number":675,"context_line":"                    if e.errno \u003d\u003d errno.ESRCH:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_62f7fe8c","line":672,"updated":"2020-08-21 06:13:02.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"36c9a4427008af3196e1b09c1aa40ecc4ddb4ee4"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"53b2e25b67632be938f598748bcffdfc0651e6cb","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                status +\u003d 1"},{"line_number":382,"context_line":"        return status"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    @command"},{"line_number":385,"context_line":"    def kill_child_pids(self, **kwargs):"},{"line_number":386,"context_line":"        \"\"\"kill child pids, optionally servicing accepted connections\"\"\""},{"line_number":387,"context_line":"        status \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_af264d15","line":384,"updated":"2020-09-03 13:19:38.000000000","message":"I\u0027m having some buyers remorse about letting this merge after unblocking the first patch","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":390,"context_line":"            if not signaled_pids:"},{"line_number":391,"context_line":"                print(_(\u0027No %s running\u0027) % server)"},{"line_number":392,"context_line":"                status +\u003d 1"},{"line_number":393,"context_line":"        return status"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    @command"},{"line_number":396,"context_line":"    def force_reload(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_14b1c944","line":393,"updated":"2020-08-26 17:27:59.000000000","message":"I don\u0027t think we should expose this from the command line - at least not if it\u0027s gunna signal ALL the children","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                print(_(\u0027Removing pid file %s with invalid pid\u0027) % pid_file)"},{"line_number":646,"context_line":"                remove_file(pid_file)"},{"line_number":647,"context_line":"                continue"},{"line_number":648,"context_line":"            if self._signal_pid(sig, pid, pid_file, kwargs.get(\u0027verbose\u0027)):"},{"line_number":649,"context_line":"                pids[pid] \u003d pid_file"},{"line_number":650,"context_line":"        return pids"},{"line_number":651,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_148a6962","line":648,"updated":"2020-08-26 17:27:59.000000000","message":"seems like a clean method extraction - i like it!","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":663,"context_line":"                print(_(\u0027Removing pid file %s with invalid pid\u0027) % pid_file)"},{"line_number":664,"context_line":"                remove_file(pid_file)"},{"line_number":665,"context_line":"                continue"},{"line_number":666,"context_line":"            ps_cmd \u003d [\u0027ps\u0027, \u0027--ppid\u0027, str(pid), \u0027--no-headers\u0027, \u0027-o\u0027, \u0027pid\u0027]"},{"line_number":667,"context_line":"            for pid in subprocess.check_output(ps_cmd).split():"},{"line_number":668,"context_line":"                pid \u003d int(pid)"},{"line_number":669,"context_line":"                if self._signal_pid(sig, pid, pid_file, kwargs.get(\u0027verbose\u0027)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_b46d7dcd","line":666,"updated":"2020-08-26 17:27:59.000000000","message":"gross","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f1e4d48e01037fc1699fdb772ab7d0fba0d85196","unresolved":false,"context_lines":[{"line_number":664,"context_line":"                remove_file(pid_file)"},{"line_number":665,"context_line":"                continue"},{"line_number":666,"context_line":"            ps_cmd \u003d [\u0027ps\u0027, \u0027--ppid\u0027, str(pid), \u0027--no-headers\u0027, \u0027-o\u0027, \u0027pid\u0027]"},{"line_number":667,"context_line":"            for pid in subprocess.check_output(ps_cmd).split():"},{"line_number":668,"context_line":"                pid \u003d int(pid)"},{"line_number":669,"context_line":"                if self._signal_pid(sig, pid, pid_file, kwargs.get(\u0027verbose\u0027)):"},{"line_number":670,"context_line":"                    pids[pid] \u003d pid_file"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_631849d2","line":667,"updated":"2020-09-01 17:39:38.000000000","message":"Gonna bomb out if workers\u003d0 :-/\n\nOTOH, these *already* don\u0027t pass when workers\u003d0, so *shrug*\n\n AssertionError: timed out waiting for PID state; got {\u0027worker\u0027: set([]), \u0027server\u0027: set([30801, 30802, 30803, 30804])}","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":701,"context_line":"        \"\"\"Kill child pids, leaving server overseer to respawn them"},{"line_number":702,"context_line":""},{"line_number":703,"context_line":"        :param graceful: if True, attempt SIGHUP on supporting servers"},{"line_number":704,"context_line":"        :param seamless: if True, attempt SIGUSR1 on supporting servers"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        :returns: a dict mapping pids (ints) to pid_files (paths)"},{"line_number":707,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_744e456f","line":704,"updated":"2020-08-26 17:27:59.000000000","message":"but... both signals do the same thing","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"}],"swift/common/wsgi.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ef63bccefeb73ffba4b63b626cff80e326b35ebd","unresolved":false,"context_lines":[{"line_number":1114,"context_line":"                signal.signal(signal.SIGTERM, signal.SIG_DFL)"},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"                def shutdown_my_listen_sock(signum, *args):"},{"line_number":1117,"context_line":"                    greenio.shutdown_safe(sock)"},{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":"                signal.signal(signal.SIGHUP, shutdown_my_listen_sock)"},{"line_number":1120,"context_line":"                signal.signal(signal.SIGUSR1, shutdown_my_listen_sock)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ec52d812","line":1117,"updated":"2020-08-21 16:11:43.000000000","message":"So prior to the parent change, we would\u0027ve wanted this to set\n\n wsgi.is_accepting \u003d False\n\nto the worker stop calling accept() and wrap up already-accepted requests *without* shutting down the socket.\n\nNow that each worker has its own listen socket, shutting it down seemed to be the most reasonable approach. Note that we *don\u0027t* want to close it (yet); that would cause the next accept() to get a EBADF and eventlet will retry it indefinitely.","commit_id":"f147bc4ad1ba15fbce4e4347211d03c00ee82cfa"}],"test/probe/test_signals.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if self.HAS_INFO:"},{"line_number":135,"context_line":"            self.swap_configs()  # new server\u0027s max_header_size \u003d\u003d 8191"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        self.do_reload()"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        wait_for_pids(self.manager, self.make_post_reload_pid_cb(),"},{"line_number":140,"context_line":"                      old_workers\u003dself.starting_pids[\u0027worker\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_b40c5dec","line":137,"updated":"2020-08-26 17:27:59.000000000","message":"this is calling kill children","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # sanity"},{"line_number":155,"context_line":"        wait_for_pids(self.manager, self.make_post_close_pid_cb(),"},{"line_number":156,"context_line":"                      old_workers\u003dself.starting_pids[\u0027worker\u0027],"},{"line_number":157,"context_line":"                      timeout\u003dself.PID_TIMEOUT)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if self.HAS_INFO:"},{"line_number":160,"context_line":"            self.check_info_value(8191)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f4f9b5c7","line":157,"updated":"2020-08-26 17:27:59.000000000","message":"and the callsbacks are going into waid_for_pids","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                                   self.starting_pids[\u0027worker\u0027])"},{"line_number":244,"context_line":"            return (post_reload_pids[\u0027server\u0027] and same_servers and"},{"line_number":245,"context_line":"                    one_old_worker and"},{"line_number":246,"context_line":"                    len(new_workers_present) \u003d\u003d num_workers - 1)"},{"line_number":247,"context_line":"        return _cb"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    def make_post_close_pid_cb(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f4225551","line":246,"updated":"2020-08-26 17:27:59.000000000","message":"i.e. one worker hasn\u0027t respawned yet","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"834aca9a5460742d0639e1620606cd0735ab1055","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            new_workers_present \u003d (post_close_pids[\u0027worker\u0027] -"},{"line_number":258,"context_line":"                                   self.starting_pids[\u0027worker\u0027])"},{"line_number":259,"context_line":"            return (post_close_pids[\u0027server\u0027] and same_servers and"},{"line_number":260,"context_line":"                    old_workers_dead and new_workers_present)"},{"line_number":261,"context_line":"        return _cb"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def do_reload(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_d41d910f","line":260,"updated":"2020-08-26 17:27:59.000000000","message":"and they get restarted","commit_id":"3f5e712be673a624bcebf006263301833a6a15b1"}]}
