)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"44b467f3be2b48dff6a770157ead85e8ad4b907b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3124ebec_606888bb","updated":"2025-05-01 15:32:47.000000000","message":"Thanks!","commit_id":"b07843e92e92d6f86bfdedde38873e664c2b5579"}],"swift/cli/ringbuilder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ee93f93a655c6afce06a071c7713024fc44bad84","unresolved":true,"context_lines":[{"line_number":1302,"context_line":"            if ring_data.devs:"},{"line_number":1303,"context_line":"                print(\u0027WARNING: Writing a ring with no partition \u0027"},{"line_number":1304,"context_line":"                      \u0027assignments but with devices; did you forget to run \u0027"},{"line_number":1305,"context_line":"                      \u0027\"rebalance\"?\u0027)"},{"line_number":1306,"context_line":"        ring_data.save("},{"line_number":1307,"context_line":"            pathjoin(backup_dir, \u0027%d.\u0027 % time() + basename(ring_file)))"},{"line_number":1308,"context_line":"        ring_data.save(ring_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"72481363_57b7755c","line":1305,"updated":"2025-04-30 19:37:37.000000000","message":"Little bit of scope creep, but it\u0027s odd that this one doesn\u0027t go to stderr...","commit_id":"1ea4b3bc5061ef7e6bdbb5e66f62981fdf963cda"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"44b467f3be2b48dff6a770157ead85e8ad4b907b","unresolved":false,"context_lines":[{"line_number":1302,"context_line":"            if ring_data.devs:"},{"line_number":1303,"context_line":"                print(\u0027WARNING: Writing a ring with no partition \u0027"},{"line_number":1304,"context_line":"                      \u0027assignments but with devices; did you forget to run \u0027"},{"line_number":1305,"context_line":"                      \u0027\"rebalance\"?\u0027)"},{"line_number":1306,"context_line":"        ring_data.save("},{"line_number":1307,"context_line":"            pathjoin(backup_dir, \u0027%d.\u0027 % time() + basename(ring_file)))"},{"line_number":1308,"context_line":"        ring_data.save(ring_file)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1115fcd4_004601a3","line":1305,"in_reply_to":"72481363_57b7755c","updated":"2025-05-01 15:32:47.000000000","message":"Done","commit_id":"1ea4b3bc5061ef7e6bdbb5e66f62981fdf963cda"}],"swift/common/middleware/ratelimit.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ee93f93a655c6afce06a071c7713024fc44bad84","unresolved":true,"context_lines":[{"line_number":308,"context_line":"            self.memcache_client \u003d cache_from_env(env)"},{"line_number":309,"context_line":"        if not self.memcache_client:"},{"line_number":310,"context_line":"            self.logger.warning("},{"line_number":311,"context_line":"                \u0027WARNING: Cannot ratelimit without a memcached client\u0027)"},{"line_number":312,"context_line":"            return self.app(env, start_response)"},{"line_number":313,"context_line":"        try:"},{"line_number":314,"context_line":"            version, account, container, obj \u003d req.split_path(1, 4, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8c39089_3fd4e71f","line":311,"updated":"2025-04-30 19:37:37.000000000","message":"We could probably just drop \"warning\" from the message -- we\u0027ve got a proper logger, so the log level should be apparent if operators want it.","commit_id":"1ea4b3bc5061ef7e6bdbb5e66f62981fdf963cda"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"44b467f3be2b48dff6a770157ead85e8ad4b907b","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            self.memcache_client \u003d cache_from_env(env)"},{"line_number":309,"context_line":"        if not self.memcache_client:"},{"line_number":310,"context_line":"            self.logger.warning("},{"line_number":311,"context_line":"                \u0027WARNING: Cannot ratelimit without a memcached client\u0027)"},{"line_number":312,"context_line":"            return self.app(env, start_response)"},{"line_number":313,"context_line":"        try:"},{"line_number":314,"context_line":"            version, account, container, obj \u003d req.split_path(1, 4, True)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d79f353e_64f10f93","line":311,"in_reply_to":"c8c39089_3fd4e71f","updated":"2025-05-01 15:32:47.000000000","message":"Done","commit_id":"1ea4b3bc5061ef7e6bdbb5e66f62981fdf963cda"}]}
