)]}'
{"Engine/agent/storlet_daemon_factory/daemon_factory.py":[{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"83219a0c5b3652e6229b0963435e17b1f7607c7a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            self.logger.debug(\u0027START_DAEMON: actual invocation\u0027)"},{"line_number":175,"context_line":"            self.logger.debug(\u0027START_DAEMON: about to start subprocess\u0027"},{"line_number":176,"context_line":"                              \u0027 for %s\u0027 % storlet_name)"},{"line_number":177,"context_line":"            str_pargs \u003d \u0027 \u0027.join(pargs)"},{"line_number":178,"context_line":"            self.logger.debug(\u0027START_DAEMON: pargs \u003d %s\u0027 % str_pargs)"},{"line_number":179,"context_line":"            self.logger.debug(\u0027START_DAEMON: env \u003d %s\u0027 % env)"},{"line_number":180,"context_line":"            # TODO(takashi): We had better use contextmanager"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_446cf207","side":"PARENT","line":177,"updated":"2016-10-10 06:13:51.000000000","message":"nice cleanup","commit_id":"44148e2adcfeeb2f99448e64892714255ff60e28"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"83219a0c5b3652e6229b0963435e17b1f7607c7a","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        env \u003d {\u0027PYTHONPATH\u0027: python_path}"},{"line_number":163,"context_line":"        return pargs, env"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def spawn_subprocess(self, pargs, env, storlet_name):"},{"line_number":166,"context_line":"        \"\"\""},{"line_number":167,"context_line":"        Launch a JVM process for some storlet daemon"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_64148e4c","line":165,"updated":"2016-10-10 06:13:51.000000000","message":"I take it that from this function we want to raise only SDaemonError, hence we intercept OSError \u0026\u0026 SDaemonError log exception and \"re-raise\" rather then just raise and have dispatch_command to log. +1!","commit_id":"a3236644a5e28c66bfea6ac2557c7230c5415321"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"83219a0c5b3652e6229b0963435e17b1f7607c7a","unresolved":false,"context_lines":[{"line_number":599,"context_line":""},{"line_number":600,"context_line":"            try:"},{"line_number":601,"context_line":"                resp \u003d handler(params)"},{"line_number":602,"context_line":"            except Exception:"},{"line_number":603,"context_line":"                self.logger.exception(\u0027Got unhandled exception\u0027)"},{"line_number":604,"context_line":"                resp \u003d CommandFailure(\u0027Unknown error\u0027)"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_8f3d33c6","line":602,"updated":"2016-10-10 06:13:51.000000000","message":"Good addition!","commit_id":"a3236644a5e28c66bfea6ac2557c7230c5415321"},{"author":{"_account_id":11317,"name":"Eran Rom","email":"eran@itsonlyme.name","username":"eranr"},"change_message_id":"83219a0c5b3652e6229b0963435e17b1f7607c7a","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        try:"},{"line_number":607,"context_line":"            with os.fdopen(outfd, \u0027w\u0027) as outfile:"},{"line_number":608,"context_line":"                outfile.write(resp.report_message)"},{"line_number":609,"context_line":"        except OSError:"},{"line_number":610,"context_line":"            self.logger.exception(\u0027Problem while writing response to service\u0027"},{"line_number":611,"context_line":"                                  \u0027out fd\u0027)"},{"line_number":612,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a95cdbc_2f533f18","line":609,"updated":"2016-10-10 06:13:51.000000000","message":"good.","commit_id":"a3236644a5e28c66bfea6ac2557c7230c5415321"}],"storlets/agent/daemon_factory/manager.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"27e5da13b1cbbb3c8cf10d1b53e52e37cbd155aa","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        :param env: Environment value"},{"line_number":165,"context_line":"        :param storlet_name: Name of the storlet to be executed"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :raises StorletDaemonError: When it fails to start subprocess, or it"},{"line_number":168,"context_line":"        :                           can not check the status of the subprocess"},{"line_number":169,"context_line":"        :                           launched"},{"line_number":170,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_de5e9f75","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":35},"updated":"2017-01-10 09:17:08.000000000","message":":raises: StorletDaemonError when...","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"406e4832f753f024a9c9453872ce62eadce7334b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        :param env: Environment value"},{"line_number":165,"context_line":"        :param storlet_name: Name of the storlet to be executed"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :raises StorletDaemonError: When it fails to start subprocess, or it"},{"line_number":168,"context_line":"        :                           can not check the status of the subprocess"},{"line_number":169,"context_line":"        :                           launched"},{"line_number":170,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_ba0fea86","line":167,"range":{"start_line":167,"start_character":8,"end_line":167,"end_character":35},"in_reply_to":"ba5201f7_de5e9f75","updated":"2017-01-11 09:15:32.000000000","message":"It seems that \u0027:raises Exception:\u0027 is also used. Please see the following examples. [1]\n\n[1] https://github.com/openstack/swift/blob/master/swift/common/utils.py#L2419-L2420\n\nI tried to find the document which defines the format, but couldn\u0027t. Do you know it?","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"27e5da13b1cbbb3c8cf10d1b53e52e37cbd155aa","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        :param storlet_name: Name of the storlet to be executed"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :raises StorletDaemonError: When it fails to start subprocess, or it"},{"line_number":168,"context_line":"        :                           can not check the status of the subprocess"},{"line_number":169,"context_line":"        :                           launched"},{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":"        self.logger.debug(\u0027About to start storlet daemon %s\u0027 % storlet_name)"},{"line_number":172,"context_line":"        # TODO(takashi): We had better use contextmanager"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_1e510763","line":169,"range":{"start_line":168,"start_character":7,"end_line":169,"end_character":15},"updated":"2017-01-10 09:17:08.000000000","message":"Unnecessary colons.","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"406e4832f753f024a9c9453872ce62eadce7334b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        :param storlet_name: Name of the storlet to be executed"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :raises StorletDaemonError: When it fails to start subprocess, or it"},{"line_number":168,"context_line":"        :                           can not check the status of the subprocess"},{"line_number":169,"context_line":"        :                           launched"},{"line_number":170,"context_line":"        \"\"\""},{"line_number":171,"context_line":"        self.logger.debug(\u0027About to start storlet daemon %s\u0027 % storlet_name)"},{"line_number":172,"context_line":"        # TODO(takashi): We had better use contextmanager"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_da266e15","line":169,"range":{"start_line":168,"start_character":7,"end_line":169,"end_character":15},"in_reply_to":"ba5201f7_1e510763","updated":"2017-01-11 09:15:32.000000000","message":"Fixed. Thanks!","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"27e5da13b1cbbb3c8cf10d1b53e52e37cbd155aa","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \u0027logger\u0027, stdin\u003ddaemon_p.stderr, stdout\u003ddn, stderr\u003ddn,"},{"line_number":182,"context_line":"                close_fds\u003dTrue, shell\u003dFalse)"},{"line_number":183,"context_line":"        except OSError:"},{"line_number":184,"context_line":"            self.logger.exception(\u0027Failed to start subprocess\u0027)"},{"line_number":185,"context_line":"            raise SDaemonError(\u0027Failed to start the storlet daemon {0}\u0027."},{"line_number":186,"context_line":"                               format(storlet_name))"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_be9e3b05","line":184,"updated":"2017-01-10 09:17:08.000000000","message":"could we be missing either str_args or env information?\n\nPerhaps, add debug log when we got an error, here.","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c9dbf39005f8877eff27e734066340289990b0d9","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \u0027logger\u0027, stdin\u003ddaemon_p.stderr, stdout\u003ddn, stderr\u003ddn,"},{"line_number":182,"context_line":"                close_fds\u003dTrue, shell\u003dFalse)"},{"line_number":183,"context_line":"        except OSError:"},{"line_number":184,"context_line":"            self.logger.exception(\u0027Failed to start subprocess\u0027)"},{"line_number":185,"context_line":"            raise SDaemonError(\u0027Failed to start the storlet daemon {0}\u0027."},{"line_number":186,"context_line":"                               format(storlet_name))"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_9520379d","line":184,"in_reply_to":"ba5201f7_be9e3b05","updated":"2017-01-11 09:20:32.000000000","message":"Done","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"27e5da13b1cbbb3c8cf10d1b53e52e37cbd155aa","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        except OSError as err:"},{"line_number":324,"context_line":"            # If the storlet daemon crashed we may get here ECHILD for which"},{"line_number":325,"context_line":"            # we want to return False"},{"line_number":326,"context_line":"            if err.errno in (errno.ECHILD, errno.ESRCH):"},{"line_number":327,"context_line":"                return False"},{"line_number":328,"context_line":"            elif err.errno \u003d\u003d errno.EPERM:"},{"line_number":329,"context_line":"                raise SDaemonError("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_01960a94","line":326,"updated":"2017-01-10 09:17:08.000000000","message":"I like this kind of cleanup ;)","commit_id":"1d08e61b27f52a0029d6418039cbdaf62da585d1"}]}
