)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"527bfde61c7964b5a89d464d5d33dc8a447cdec0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"57a113da_030daba7","updated":"2021-12-07 11:56:32.000000000","message":"follow up with more test coverage: https://review.opendev.org/c/openstack/swift/+/820855","commit_id":"bc8377f989e113af8c44454117aa3345b68b395f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e1c09cce827079303f8da55d98d83008211339b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b7df8f59_4c72eccd","updated":"2021-12-08 19:08:07.000000000","message":"Yeah, per-device metrics getting emitted per-updater definitely seems to be too much :-/","commit_id":"094fb585faf31849c40da98c0e4832161f3e42c8"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ea50179534f647a76192b0b48098dfa16ce225a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9773ceed_194c1aca","updated":"2021-12-07 17:07:59.000000000","message":"let\u0027s understand just how many stats files this might generate given there are metrics *per device* per node","commit_id":"094fb585faf31849c40da98c0e4832161f3e42c8"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72bbe15407c132d8804b0e3e73659a52e1b97114","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fc95ec8a_1fdd3e3f","updated":"2021-12-10 09:07:18.000000000","message":"looks like https://review.opendev.org/c/openstack/swift/+/820855 was squashed in","commit_id":"3e494a675c89b1a8c367090f29aaa6bb3cc59731"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"93c9827208ff41b548e8cb58fee39a037206acd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7d6fd7cf_1454b6fb","updated":"2021-12-13 19:45:53.000000000","message":"recheck","commit_id":"219a79a24d4d687b5a9b72b60d84665ebc2ec137"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b8a19d4c1a536c5bc41deb26eac0684cb83df04f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a437bcd6_d7f157f7","updated":"2021-12-13 23:14:15.000000000","message":"recheck","commit_id":"219a79a24d4d687b5a9b72b60d84665ebc2ec137"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ce746229958dd1c0739d0c5b287f1b2e62a5d694","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b6254de7_69348ff8","updated":"2022-01-25 23:47:04.000000000","message":"seems to be helping!","commit_id":"219a79a24d4d687b5a9b72b60d84665ebc2ec137"}],"swift/obj/updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b103a844ceb9a699cca5810c01136d0d22fac557","unresolved":true,"context_lines":[{"line_number":470,"context_line":"        redirect \u003d None"},{"line_number":471,"context_line":"        start \u003d time.time()"},{"line_number":472,"context_line":"        node_timing_string \u003d \u0027updater.timing.node.%s.%s\u0027 % ("},{"line_number":473,"context_line":"            node[\u0027ip\u0027].replace(\u0027.\u0027, \u0027_\u0027), node[\u0027device\u0027])"},{"line_number":474,"context_line":"        try:"},{"line_number":475,"context_line":"            with ConnectionTimeout(self.conn_timeout):"},{"line_number":476,"context_line":"                conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"b21614f6_c5cd61f8","line":473,"updated":"2021-12-03 15:18:52.000000000","message":"for my education, are periods interpreted as a path separator or somesuch in statsd handling?","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"564be92d369b2c780bf6034ae4d794c6e1184c9a","unresolved":true,"context_lines":[{"line_number":470,"context_line":"        redirect \u003d None"},{"line_number":471,"context_line":"        start \u003d time.time()"},{"line_number":472,"context_line":"        node_timing_string \u003d \u0027updater.timing.node.%s.%s\u0027 % ("},{"line_number":473,"context_line":"            node[\u0027ip\u0027].replace(\u0027.\u0027, \u0027_\u0027), node[\u0027device\u0027])"},{"line_number":474,"context_line":"        try:"},{"line_number":475,"context_line":"            with ConnectionTimeout(self.conn_timeout):"},{"line_number":476,"context_line":"                conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"5d1d9483_1ddd411b","line":473,"in_reply_to":"b21614f6_c5cd61f8","updated":"2021-12-06 19:35:39.000000000","message":"Yeah, something like that, anyway. I seem to remember having previously found it easy to make graphs of things like\n\n sum(updater.timing.node.*.*)\n\nand have it aggregate at either the first or second *.","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b103a844ceb9a699cca5810c01136d0d22fac557","unresolved":true,"context_lines":[{"line_number":494,"context_line":"                      \u0027server %(ip)s: %(port)s / %(device)s\u0027),"},{"line_number":495,"context_line":"                    {\u0027status\u0027: resp.status, \u0027ip\u0027: node[\u0027ip\u0027],"},{"line_number":496,"context_line":"                     \u0027port\u0027: node[\u0027port\u0027], \u0027device\u0027: node[\u0027device\u0027]})"},{"line_number":497,"context_line":"            status \u003d resp.status"},{"line_number":498,"context_line":"            return success, node[\u0027id\u0027], redirect"},{"line_number":499,"context_line":"        except (Exception, Timeout):"},{"line_number":500,"context_line":"            self.logger.exception(_(\u0027ERROR with remote server \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f7aa4ac_047080a9","line":497,"updated":"2021-12-03 15:18:52.000000000","message":"nit: you could resolve resp.status once at line 481","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"564be92d369b2c780bf6034ae4d794c6e1184c9a","unresolved":false,"context_lines":[{"line_number":494,"context_line":"                      \u0027server %(ip)s: %(port)s / %(device)s\u0027),"},{"line_number":495,"context_line":"                    {\u0027status\u0027: resp.status, \u0027ip\u0027: node[\u0027ip\u0027],"},{"line_number":496,"context_line":"                     \u0027port\u0027: node[\u0027port\u0027], \u0027device\u0027: node[\u0027device\u0027]})"},{"line_number":497,"context_line":"            status \u003d resp.status"},{"line_number":498,"context_line":"            return success, node[\u0027id\u0027], redirect"},{"line_number":499,"context_line":"        except (Exception, Timeout):"},{"line_number":500,"context_line":"            self.logger.exception(_(\u0027ERROR with remote server \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b2bc576_18103c8a","line":497,"in_reply_to":"1f7aa4ac_047080a9","updated":"2021-12-06 19:35:39.000000000","message":"Done","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b103a844ceb9a699cca5810c01136d0d22fac557","unresolved":true,"context_lines":[{"line_number":499,"context_line":"        except (Exception, Timeout):"},{"line_number":500,"context_line":"            self.logger.exception(_(\u0027ERROR with remote server \u0027"},{"line_number":501,"context_line":"                                    \u0027%(ip)s:%(port)s/%(device)s\u0027), node)"},{"line_number":502,"context_line":"            status \u003d 499"},{"line_number":503,"context_line":"        finally:"},{"line_number":504,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":505,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6cb9e628_bb571fc7","line":502,"updated":"2021-12-03 15:18:52.000000000","message":"any value in differentiating connection vs node timeout? (it\u0027s probably, but not definitely, implied by the elapsed time)","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"564be92d369b2c780bf6034ae4d794c6e1184c9a","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        except (Exception, Timeout):"},{"line_number":500,"context_line":"            self.logger.exception(_(\u0027ERROR with remote server \u0027"},{"line_number":501,"context_line":"                                    \u0027%(ip)s:%(port)s/%(device)s\u0027), node)"},{"line_number":502,"context_line":"            status \u003d 499"},{"line_number":503,"context_line":"        finally:"},{"line_number":504,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":505,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"}],"source_content_type":"text/x-python","patch_set":2,"id":"a0831f4d_727f90af","line":502,"in_reply_to":"6cb9e628_bb571fc7","updated":"2021-12-06 19:35:39.000000000","message":"Yeah, probably -- I\u0027m also realizing that this log level is all wrong for any sort of timeout...","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b103a844ceb9a699cca5810c01136d0d22fac557","unresolved":true,"context_lines":[{"line_number":502,"context_line":"            status \u003d 499"},{"line_number":503,"context_line":"        finally:"},{"line_number":504,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":505,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"},{"line_number":506,"context_line":"                               elapsed * 1000)"},{"line_number":507,"context_line":"            self.logger.timing(node_timing_string, elapsed * 1000)"},{"line_number":508,"context_line":"        return HTTP_INTERNAL_SERVER_ERROR, node[\u0027id\u0027], redirect"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff55f6cc_b95bc294","line":505,"updated":"2021-12-03 15:18:52.000000000","message":"nit: my IDE is whining that status may not be assigned. I\u0027m not seeing the problem myself, although line 502 should perhaps go ahead of line 500 in case the logger raises an exception (but IDE still whines if I do that)","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"564be92d369b2c780bf6034ae4d794c6e1184c9a","unresolved":true,"context_lines":[{"line_number":502,"context_line":"            status \u003d 499"},{"line_number":503,"context_line":"        finally:"},{"line_number":504,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":505,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"},{"line_number":506,"context_line":"                               elapsed * 1000)"},{"line_number":507,"context_line":"            self.logger.timing(node_timing_string, elapsed * 1000)"},{"line_number":508,"context_line":"        return HTTP_INTERNAL_SERVER_ERROR, node[\u0027id\u0027], redirect"}],"source_content_type":"text/x-python","patch_set":2,"id":"f1bfd9c6_006442b0","line":505,"in_reply_to":"ff55f6cc_b95bc294","updated":"2021-12-06 19:35:39.000000000","message":"I think I landed on something that your IDE won\u0027t complain about ;-)","commit_id":"204be9221d76515186181610710c2779f0e76539"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"527bfde61c7964b5a89d464d5d33dc8a447cdec0","unresolved":true,"context_lines":[{"line_number":510,"context_line":"            self.logger.info("},{"line_number":511,"context_line":"                \u0027Timeout talking to remote server \u0027"},{"line_number":512,"context_line":"                \u0027%(replication_ip)s:%(replication_port)s/%(device)s: %(exc)s\u0027,"},{"line_number":513,"context_line":"                dict(node, exc\u003dexc))"},{"line_number":514,"context_line":"        finally:"},{"line_number":515,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":516,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5ffeccd_aedcde5f","line":513,"updated":"2021-12-07 11:56:32.000000000","message":"the info log does not include the status, so only the timeout value reveals the type of timeout since %(exc)s does not render the timeout type.","commit_id":"bc8377f989e113af8c44454117aa3345b68b395f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"e1c09cce827079303f8da55d98d83008211339b0","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            self.logger.info("},{"line_number":511,"context_line":"                \u0027Timeout talking to remote server \u0027"},{"line_number":512,"context_line":"                \u0027%(replication_ip)s:%(replication_port)s/%(device)s: %(exc)s\u0027,"},{"line_number":513,"context_line":"                dict(node, exc\u003dexc))"},{"line_number":514,"context_line":"        finally:"},{"line_number":515,"context_line":"            elapsed \u003d time.time() - start"},{"line_number":516,"context_line":"            self.logger.timing(\u0027updater.timing.status.%s\u0027 % status,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e6b2553_c2a133f2","line":513,"in_reply_to":"c5ffeccd_aedcde5f","updated":"2021-12-08 19:08:07.000000000","message":"Good catch! Fixed.","commit_id":"bc8377f989e113af8c44454117aa3345b68b395f"}],"test/unit/obj/test_updater.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72bbe15407c132d8804b0e3e73659a52e1b97114","unresolved":true,"context_lines":[{"line_number":616,"context_line":"                         pickle.load(open(op_path, \u0027rb\u0027)).get(\u0027successes\u0027))"},{"line_number":617,"context_line":"        self.assertEqual([], ou.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":618,"context_line":"        self.assertIn("},{"line_number":619,"context_line":"            \u0027Timeout waiting on remote server 127.0.0.1:%d/sda1: 99 seconds\u0027"},{"line_number":620,"context_line":"            % bindsock.getsockname()[1], ou.logger.get_lines_for_level(\u0027info\u0027))"},{"line_number":621,"context_line":"        self.assertEqual([args for args, kw in ou.logger.log_dict[\u0027timing\u0027]], ["},{"line_number":622,"context_line":"            (\u0027updater.timing.status.499\u0027, mock.ANY),"}],"source_content_type":"text/x-python","patch_set":5,"id":"2b7b5910_7001a61f","line":619,"range":{"start_line":619,"start_character":21,"end_line":619,"end_character":31},"updated":"2021-12-10 09:07:18.000000000","message":"nice","commit_id":"3e494a675c89b1a8c367090f29aaa6bb3cc59731"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"72bbe15407c132d8804b0e3e73659a52e1b97114","unresolved":true,"context_lines":[{"line_number":638,"context_line":"                         pickle.load(open(op_path, \u0027rb\u0027)).get(\u0027successes\u0027))"},{"line_number":639,"context_line":"        self.assertEqual([], ou.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":640,"context_line":"        self.assertIn("},{"line_number":641,"context_line":"            \u0027Timeout connecting to remote server 127.0.0.1:%d/sda1: 9 seconds\u0027"},{"line_number":642,"context_line":"            % bindsock.getsockname()[1], ou.logger.get_lines_for_level(\u0027info\u0027))"},{"line_number":643,"context_line":"        self.assertEqual([args for args, kw in ou.logger.log_dict[\u0027timing\u0027]], ["},{"line_number":644,"context_line":"            (\u0027updater.timing.status.500\u0027, mock.ANY),"}],"source_content_type":"text/x-python","patch_set":5,"id":"4f74417a_09419f3e","line":641,"range":{"start_line":641,"start_character":21,"end_line":641,"end_character":32},"updated":"2021-12-10 09:07:18.000000000","message":"nice","commit_id":"3e494a675c89b1a8c367090f29aaa6bb3cc59731"}]}
