)]}'
{"glance/common/wsgi.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                break"},{"line_number":268,"context_line":"        eventlet.greenio.shutdown_safe(self.sock)"},{"line_number":269,"context_line":"        self.sock.close()"},{"line_number":270,"context_line":"        for child in self.children:"},{"line_number":271,"context_line":"            os.waitpid(child, 0)"},{"line_number":272,"context_line":"        self.logger.debug(_(\u0027Exited\u0027))"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2FgsM%3D","line":270,"updated":"2013-05-07 12:27:51.000000000","message":"Could you add a comment about why this is needed? thx.","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"ea18d22bb2180a274b921bf617ee559d17b652c6","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                break"},{"line_number":268,"context_line":"        eventlet.greenio.shutdown_safe(self.sock)"},{"line_number":269,"context_line":"        self.sock.close()"},{"line_number":270,"context_line":"        for child in self.children:"},{"line_number":271,"context_line":"            os.waitpid(child, 0)"},{"line_number":272,"context_line":"        self.logger.debug(_(\u0027Exited\u0027))"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Ff7k%3D","line":270,"in_reply_to":"AAAAOn%2F%2FgsM%3D","updated":"2013-05-07 19:14:05.000000000","message":"actually, this is a good catch. I do not always want this.  In the case of a HUP this would cause a problem.","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"}],"glance/tests/functional/__init__.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        if not expect_exit:"},{"line_number":168,"context_line":"            rc \u003d 0"},{"line_number":169,"context_line":"            # verify that the process started"},{"line_number":170,"context_line":"            if not os.path.exists(\u0027/proc/%s\u0027 % self.process_pid):"},{"line_number":171,"context_line":"                raise RuntimeError(\"The process did not start\")"},{"line_number":172,"context_line":"        else:"},{"line_number":173,"context_line":"            rc \u003d test_utils.wait_for_fork("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Fgqw%3D","line":170,"updated":"2013-05-07 12:27:51.000000000","message":"Would it be better to use os.kill(pid, 0) ? This doesn\u0027t send any signal to the process but raises an exception if the process doesn\u0027t exist.","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"ea18d22bb2180a274b921bf617ee559d17b652c6","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        if not expect_exit:"},{"line_number":168,"context_line":"            rc \u003d 0"},{"line_number":169,"context_line":"            # verify that the process started"},{"line_number":170,"context_line":"            if not os.path.exists(\u0027/proc/%s\u0027 % self.process_pid):"},{"line_number":171,"context_line":"                raise RuntimeError(\"The process did not start\")"},{"line_number":172,"context_line":"        else:"},{"line_number":173,"context_line":"            rc \u003d test_utils.wait_for_fork("}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Ff6o%3D","line":170,"in_reply_to":"AAAAOn%2F%2Fgqw%3D","updated":"2013-05-07 19:14:05.000000000","message":"well, if the file does not exist than the pid is not valid and thus a kill would fail as well.  However I will revisit this, it looks strange to me too.","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        Any kwargs passed to this method will override the configuration"},{"line_number":187,"context_line":"        value in the conf file used in starting the servers."},{"line_number":188,"context_line":"        \"\"\""},{"line_number":189,"context_line":"        self.stop()"},{"line_number":190,"context_line":"        return self.start(expect_exit\u003dexpect_exit,"},{"line_number":191,"context_line":"                          expected_exitcode\u003dexpected_exitcode, **kwargs)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2FgqM%3D","line":189,"updated":"2013-05-07 12:27:51.000000000","message":"Is there any exception that should be caught from stop?","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        super(ScrubberDaemon, self).__init__(test_dir, 0)"},{"line_number":490,"context_line":"        self.server_name \u003d \u0027scrubber\u0027"},{"line_number":491,"context_line":"        self.server_program \u003d \u0027glance-%s\u0027 % self.server_name"},{"line_number":492,"context_line":"        self.stop_kill \u003d False"},{"line_number":493,"context_line":"        self.daemon \u003d daemon"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        self.image_dir \u003d os.path.join(self.test_dir, \"images\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Fgqk%3D","line":492,"updated":"2013-05-07 12:27:51.000000000","message":"This is already set in Server\u0027s __init__","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"ea18d22bb2180a274b921bf617ee559d17b652c6","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        super(ScrubberDaemon, self).__init__(test_dir, 0)"},{"line_number":490,"context_line":"        self.server_name \u003d \u0027scrubber\u0027"},{"line_number":491,"context_line":"        self.server_program \u003d \u0027glance-%s\u0027 % self.server_name"},{"line_number":492,"context_line":"        self.stop_kill \u003d False"},{"line_number":493,"context_line":"        self.daemon \u003d daemon"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        self.image_dir \u003d os.path.join(self.test_dir, \"images\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Ff6M%3D","line":492,"in_reply_to":"AAAAOn%2F%2Fgqk%3D","updated":"2013-05-07 19:14:05.000000000","message":"Done","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"b2e64406919ecdb600e029d4975e7904c893f088","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def reload(self, expect_exit\u003dTrue, expected_exitcode\u003d0, **kwargs):"},{"line_number":184,"context_line":"        \"\"\""},{"line_number":185,"context_line":"        Call glane-control reload for a specific server."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        Any kwargs passed to this method will override the configuration"},{"line_number":188,"context_line":"        value in the conf file used in starting the servers."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAPH%2F%2F%2BLk%3D","line":185,"updated":"2013-05-17 15:46:43.000000000","message":"This should prolly change","commit_id":"ab5e25fe21a82dd045990551115fd128b73af5b5"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"b2e64406919ecdb600e029d4975e7904c893f088","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        tests are destroyed or spun down"},{"line_number":629,"context_line":"        \"\"\""},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"        # call stop on each of the servers instead of checking the"},{"line_number":632,"context_line":"        # pid file.  stop() will wait until the child server is dead."},{"line_number":633,"context_line":"        # This eliminates the possibility of a race between a child"},{"line_number":634,"context_line":"        # process listening on a port actually dying and a new process"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAPH%2F%2F%2BK4%3D","line":631,"updated":"2013-05-17 15:46:43.000000000","message":"Can you put # NOTE(jbresnah) as per hacking.","commit_id":"ab5e25fe21a82dd045990551115fd128b73af5b5"}],"glance/tests/utils.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def fork_exec(cmd,"},{"line_number":128,"context_line":"              exec_env\u003dNone,"},{"line_number":129,"context_line":"              logfile\u003dNone):"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    env \u003d os.environ.copy()"},{"line_number":132,"context_line":"    if exec_env is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2FgqI%3D","line":129,"updated":"2013-05-07 12:27:51.000000000","message":"Could you add some docs here?","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"ea18d22bb2180a274b921bf617ee559d17b652c6","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def fork_exec(cmd,"},{"line_number":128,"context_line":"              exec_env\u003dNone,"},{"line_number":129,"context_line":"              logfile\u003dNone):"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    env \u003d os.environ.copy()"},{"line_number":132,"context_line":"    if exec_env is not None:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Ff6w%3D","line":129,"in_reply_to":"AAAAOn%2F%2FgqI%3D","updated":"2013-05-07 19:14:05.000000000","message":"will do","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5d103e8b79396408364b410e345611e90ffbbd57","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def wait_for_fork(pid,"},{"line_number":157,"context_line":"                  raise_error\u003dTrue,"},{"line_number":158,"context_line":"                  expected_exitcode\u003d0):"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    rc \u003d 0"},{"line_number":161,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2FgqE%3D","line":158,"updated":"2013-05-07 12:27:51.000000000","message":"ditto","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"ea18d22bb2180a274b921bf617ee559d17b652c6","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"def wait_for_fork(pid,"},{"line_number":157,"context_line":"                  raise_error\u003dTrue,"},{"line_number":158,"context_line":"                  expected_exitcode\u003d0):"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    rc \u003d 0"},{"line_number":161,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAOn%2F%2Ff6s%3D","line":158,"in_reply_to":"AAAAOn%2F%2FgqE%3D","updated":"2013-05-07 19:14:05.000000000","message":"will do","commit_id":"413045f5fee59a79e57fcd424332a476beb0cf65"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"b2e64406919ecdb600e029d4975e7904c893f088","unresolved":false,"context_lines":[{"line_number":128,"context_line":"              exec_env\u003dNone,"},{"line_number":129,"context_line":"              logfile\u003dNone):"},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":"    Execute a command using fork/exec.  This is needed for programs"},{"line_number":132,"context_line":"    system executions that need path searching but cannot have a"},{"line_number":133,"context_line":"    shell as their parent process, for example: glance-api.  When"},{"line_number":134,"context_line":"    glance-api starts it sets itself as the parent process for its"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAPH%2F%2F94g%3D","line":131,"updated":"2013-05-17 15:46:43.000000000","message":"This and the next docstring need a \u003c50char short description at the top.","commit_id":"ab5e25fe21a82dd045990551115fd128b73af5b5"}]}
