)]}'
{"swiftclient/service.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"82fff34977519e23bf3e704f4aab8238ead93fc5","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                except ClientException as err:"},{"line_number":438,"context_line":"                    logger.exception(err)"},{"line_number":439,"context_line":"                    if err.http_status !\u003d 404:"},{"line_number":440,"context_line":"                        traceback, err_time \u003d report_traceback()"},{"line_number":441,"context_line":"                        res.update({"},{"line_number":442,"context_line":"                            \u0027success\u0027: False,"},{"line_number":443,"context_line":"                            \u0027error\u0027: err,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_bfa8058d","line":440,"updated":"2015-07-09 18:40:16.000000000","message":"Suppose logger.exception() hits and handles an exception (maybe the log file\u0027s disk is full, maybe there was some sort of locking issue, whatever). Do we get the traceback for the ClientException, the traceback for the logger\u0027s exception, or nothing at all? I think it might be that last one...","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"change_message_id":"b2d8518e3137284980902df5ae2459989ed7d059","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                except ClientException as err:"},{"line_number":438,"context_line":"                    logger.exception(err)"},{"line_number":439,"context_line":"                    if err.http_status !\u003d 404:"},{"line_number":440,"context_line":"                        traceback, err_time \u003d report_traceback()"},{"line_number":441,"context_line":"                        res.update({"},{"line_number":442,"context_line":"                            \u0027success\u0027: False,"},{"line_number":443,"context_line":"                            \u0027error\u0027: err,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_d757a600","line":440,"in_reply_to":"ba3cc151_bfa8058d","updated":"2015-07-20 22:12:23.000000000","message":"Have swapped the order to give us the best possible opportunity of preserving the trace.","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"82fff34977519e23bf3e704f4aab8238ead93fc5","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                            \u0027response_dict\u0027: response_dict"},{"line_number":613,"context_line":"                        })"},{"line_number":614,"context_line":"                        return res"},{"line_number":615,"context_line":"                    raise SwiftError(\u0027Account not found\u0027, exc\u003derr)"},{"line_number":616,"context_line":"                except Exception as err:"},{"line_number":617,"context_line":"                    logger.exception(err)"},{"line_number":618,"context_line":"                    traceback, err_time \u003d report_traceback()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_9c92ef55","line":615,"updated":"2015-07-09 18:40:16.000000000","message":"Good catch!","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"82fff34977519e23bf3e704f4aab8238ead93fc5","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                container, headers\u003dheaders, response_dict\u003dresult)"},{"line_number":737,"context_line":"        except ClientException as err:"},{"line_number":738,"context_line":"            if err.http_status !\u003d 404:"},{"line_number":739,"context_line":"                logger.exception(err)"},{"line_number":740,"context_line":"                raise"},{"line_number":741,"context_line":"            _response_dict \u003d {}"},{"line_number":742,"context_line":"            res \u003d conn.put_container("}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ea756d97","line":739,"updated":"2015-07-09 18:40:16.000000000","message":"If we\u0027re going to re-raise the exception, shouldn\u0027t we leave it to the consumer to decide whether or not to perform logging? I feel like this will lead to doubled-up tracebacks.\n\n(There are similar changes in _delete_object and capabilities.)","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"change_message_id":"b2d8518e3137284980902df5ae2459989ed7d059","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                container, headers\u003dheaders, response_dict\u003dresult)"},{"line_number":737,"context_line":"        except ClientException as err:"},{"line_number":738,"context_line":"            if err.http_status !\u003d 404:"},{"line_number":739,"context_line":"                logger.exception(err)"},{"line_number":740,"context_line":"                raise"},{"line_number":741,"context_line":"            _response_dict \u003d {}"},{"line_number":742,"context_line":"            res \u003d conn.put_container("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_3464c847","line":739,"in_reply_to":"ba3cc151_ea756d97","updated":"2015-07-20 22:12:23.000000000","message":"I agree, I might have been a bit over enthusiastic with the logging.","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"82fff34977519e23bf3e704f4aab8238ead93fc5","unresolved":false,"context_lines":[{"line_number":847,"context_line":"        except ClientException as err:"},{"line_number":848,"context_line":"            logger.exception(err)"},{"line_number":849,"context_line":"            traceback, err_time \u003d report_traceback()"},{"line_number":850,"context_line":"            logger.info(traceback)"},{"line_number":851,"context_line":"            if err.http_status !\u003d 404:"},{"line_number":852,"context_line":"                error \u003d (err, traceback, err_time)"},{"line_number":853,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_3c1e43bb","line":850,"updated":"2015-07-09 18:40:16.000000000","message":"Why are we logging the traceback here? Wasn\u0027t it included when calling logging.exception above, and with a higher priority?\n\n(There\u0027s a similar change in _list_container_job.)","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"change_message_id":"b2d8518e3137284980902df5ae2459989ed7d059","unresolved":false,"context_lines":[{"line_number":847,"context_line":"        except ClientException as err:"},{"line_number":848,"context_line":"            logger.exception(err)"},{"line_number":849,"context_line":"            traceback, err_time \u003d report_traceback()"},{"line_number":850,"context_line":"            logger.info(traceback)"},{"line_number":851,"context_line":"            if err.http_status !\u003d 404:"},{"line_number":852,"context_line":"                error \u003d (err, traceback, err_time)"},{"line_number":853,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_f45d007a","line":850,"in_reply_to":"ba3cc151_3c1e43bb","updated":"2015-07-20 22:12:23.000000000","message":"Good spot - leftover from an old version.","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e90dfc64cd0f6edde61ae110c00e50815b65ef62","unresolved":false,"context_lines":[{"line_number":1267,"context_line":"                            # Something unexpected went wrong - cancel"},{"line_number":1268,"context_line":"                            # remaining downloads"},{"line_number":1269,"context_line":"                            traceback, err_time \u003d report_traceback()"},{"line_number":1270,"context_line":"                            logger.exception(err)"},{"line_number":1271,"context_line":"                            for _d in page_downs:"},{"line_number":1272,"context_line":"                                _d.cancel()"},{"line_number":1273,"context_line":"                            raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_e8a7c8a4","line":1270,"updated":"2015-08-31 20:34:26.000000000","message":"Where did we get err? Do we need to add an \u0027as err\u0027 to the \u0027except Exception\u0027 above?\n\nEven if we *do* capture the exception, aren\u0027t we going to re-raise in a moment? Will this cause doubled-up tracebacks?\n\n(Actually, come to think of it, re-raising may be problematic if _d.cancel() does something that clears the exception frame. I fixed something similar in swift\u0027s proxy_logging in change Iadeea3f61e70bf83dc0eb063fdb27edd16f3ca32 -- maybe we should be using sys.exc_info and six.reraise here?)","commit_id":"b797039c1875beea6a994332c576504f0c9edb8d"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d2e4f4931423a1d6b9ffb44c71d213e8c4d80c4","unresolved":false,"context_lines":[{"line_number":1260,"context_line":"                            )"},{"line_number":1261,"context_line":"                        except ClientException as err:"},{"line_number":1262,"context_line":"                            # Allow the current page to finish downloading"},{"line_number":1263,"context_line":"                            logger.exception(err)"},{"line_number":1264,"context_line":"                            error \u003d err"},{"line_number":1265,"context_line":"                        except Exception:"},{"line_number":1266,"context_line":"                            # Something unexpected went wrong - cancel"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_ed265615","line":1263,"updated":"2015-09-03 17:06:35.000000000","message":"this exception is logged but also raised? does that mean it will be logged again wherever it is caught?","commit_id":"3c0289844f73b9e685b8443c90b0ca80e0b18f28"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9d2e4f4931423a1d6b9ffb44c71d213e8c4d80c4","unresolved":false,"context_lines":[{"line_number":1262,"context_line":"                            # Allow the current page to finish downloading"},{"line_number":1263,"context_line":"                            logger.exception(err)"},{"line_number":1264,"context_line":"                            error \u003d err"},{"line_number":1265,"context_line":"                        except Exception:"},{"line_number":1266,"context_line":"                            # Something unexpected went wrong - cancel"},{"line_number":1267,"context_line":"                            # remaining downloads"},{"line_number":1268,"context_line":"                            for _d in page_downs:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_aa77e400","line":1265,"updated":"2015-09-03 17:06:35.000000000","message":"why not log this exception?","commit_id":"3c0289844f73b9e685b8443c90b0ca80e0b18f28"}],"swiftclient/utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"82fff34977519e23bf3e704f4aab8238ead93fc5","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    return json.loads(body.decode(charset))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def report_traceback():"},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":"    Reports a timestamp and full traceback for a given exception."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_7fc6fd9a","line":122,"updated":"2015-07-09 18:40:16.000000000","message":"How does this behave if we aren\u0027t in an exception context?","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"},{"author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"change_message_id":"b2d8518e3137284980902df5ae2459989ed7d059","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    return json.loads(body.decode(charset))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def report_traceback():"},{"line_number":123,"context_line":"    \"\"\""},{"line_number":124,"context_line":"    Reports a timestamp and full traceback for a given exception."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_974cbe43","line":122,"in_reply_to":"ba3cc151_7fc6fd9a","updated":"2015-07-20 22:12:23.000000000","message":"It raises an AttributeError - I\u0027ve put in some error handling for this.","commit_id":"5c1dd03f3e2332ec5c832ec441f9ca3360fabe4a"}]}
