)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37040,"name":"Md Azmain Adib Pahlowan","display_name":"Azmain Adib","email":"adib1905@gmail.com","username":"aadib"},"change_message_id":"3167bc4bd2849ec163d9801133f2849851d45a4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8332e245_7e164f7e","updated":"2024-06-27 09:39:07.000000000","message":"recheck (network problem?)","commit_id":"4e1fd50d355e93ceefaa118333ffae90430ab1a5"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"73757687_080961ae","updated":"2024-07-08 04:11:49.000000000","message":"Great patch, this is looking really good. I\u0027ve only had a chance to have a quick parse of the code so far. Have pulled it out into an SAIO but haven\u0027t had a chance to run it through yet (first day back from vacation).\n\nI wonder if we\u0027d want to have a snapshot of the containers currently in flight or in progress. Maybe something like: https://paste.opendev.org/show/824642/ (although I don\u0027t think that diff is easy to read). Bascially it adds a try/finally block to add and remove the current container a reap container thread is working on.\nAlthough that might not make much sense when running with alot of container concurrency. So need to see it run in a SAIO first. But wanted to get at least a basic review up before our meeting ;)","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"fcd4f2ebdc3626ebf9c762d89cbb9627973ab7a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5f1c530d_f844b8f8","updated":"2024-07-19 06:46:41.000000000","message":"Looks likes its writing out the recon nicely:\n\n    {\n     \"account_auditor_pass_completed\": 0.12296199798583984,\n      \"reaping_in_progress\": {\n        \"all\": {\n          \"account\": \"a\",\n          \"containers_deleted\": 35,\n          \"containers_possibly_remaining\": 0,\n          \"containers_remaining\": 0,\n          \"objects_deleted\": 10500,\n          \"objects_possibly_remaining\": 0,\n          \"objects_remaining\": 0,\n          \"return_codes\": {\n           \"2\": 10675\n         }\n      }\n      },\n      \"replication_last\": 1721366163.5784178,\n      \"replication_stats\": {\n        \"attempted\": 1,\n        \"deferred\": 0,\n        \"diff\": 0,\n        \"diff_capped\": 0,\n        \"empty\": 0,\n        \"failure\": 0,\n        \"hashmatch\": 0,\n        \"no_change\": 2,\n        \"remote_merge\": 0,\n        \"remove\": 0,\n        \"rsync\": 0,\n        \"start\": 1721366162.88927,\n        \"success\": 2,\n        \"ts_repl\": 0\n       },\n      \"replication_time\": 0.6891477108001709\n    }\n\nIt doesn\u0027t get a chance to do a final clean up on finish.. maybe we need to write a timestamp of when the current inprogress was written so ops watching know? :shrug:","commit_id":"441e6095e7d9b3154d4bb24f519e7b9e1b833ca6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"2660599953ec9e46210dc70bdcd92343185b1f6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"db75baf8_b157a40d","updated":"2024-07-24 07:09:39.000000000","message":"ohh nice, containers_in_progress!\n\nZuul has let you know there are pep8 (code style) issues. You can test this locally by running something like:\n\n    tox -epep8","commit_id":"93d73ebe588b6fa624640f87c5d7ddcfc49d2f66"}],"doc/source/admin_guide.rst":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4bd261bc545b16680004bf0e78741f307014b931","unresolved":false,"context_lines":[{"line_number":636,"context_line":"each node should store 4096 partitions::"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":" Expected partitions for region r2:                                      8192"},{"line_number":639,"context_line":" Handoffs stored across 4 nodes in region r1:                 8192 / 4 \u003d 2048"},{"line_number":640,"context_line":" Maximum number of partitions on each server in region r1: 2048 + 4096 \u003d 6144"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"Worst case is that handoff partitions in region 1 are populated with new"}],"source_content_type":"text/x-rst","patch_set":7,"id":"01507211_31fc2a93","line":639,"range":{"start_line":639,"start_character":72,"end_line":639,"end_character":73},"updated":"2024-07-25 00:04:52.000000000","message":"Non-breaking space vs space -- sneaky! Thanks for cleaning it up.","commit_id":"93d73ebe588b6fa624640f87c5d7ddcfc49d2f66"}],"etc/account-server.conf-sample":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4bd261bc545b16680004bf0e78741f307014b931","unresolved":true,"context_lines":[{"line_number":264,"context_line":"# concurrency \u003d 25"},{"line_number":265,"context_line":"# interval \u003d 3600.0"},{"line_number":266,"context_line":"# Interval between dumping stats to recon"},{"line_number":267,"context_line":"# stats_interval\u003d300"},{"line_number":268,"context_line":"# node_timeout \u003d 10"},{"line_number":269,"context_line":"# conn_timeout \u003d 0.5"},{"line_number":270,"context_line":"#"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"6d7607e3_22f2f582","line":267,"range":{"start_line":267,"start_character":16,"end_line":267,"end_character":17},"updated":"2024-07-25 00:04:52.000000000","message":"nit: Let\u0027s add some spaces around it, similar to the other lines.","commit_id":"93d73ebe588b6fa624640f87c5d7ddcfc49d2f66"}],"swift/account/reaper.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":true,"context_lines":[{"line_number":68,"context_line":"        self.devices \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":69,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":70,"context_line":"        self.interval \u003d float(conf.get(\u0027interval\u0027, 3600))"},{"line_number":71,"context_line":"        self.stats_interval \u003d float(conf.get(\u0027stats_interval\u0027, 300))"},{"line_number":72,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":73,"context_line":"        self.account_ring \u003d None"},{"line_number":74,"context_line":"        self.container_ring \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"407bae59_7c068a70","line":71,"updated":"2024-07-08 04:11:49.000000000","message":"Great name and default (same as the other replicators etc). Although it would be good to add `stats_interval\u003d300` and some info about it to etc/account-server.conf-sample under the `[account-reaper]` section.","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":37058,"name":"Mohamed Hassaneen","email":"mohammedashoor89@gmail.com","username":"mohamed"},"change_message_id":"0a52c69e3b733e7259b6b74285e9566df0018c6e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.devices \u003d conf.get(\u0027devices\u0027, \u0027/srv/node\u0027)"},{"line_number":69,"context_line":"        self.mount_check \u003d config_true_value(conf.get(\u0027mount_check\u0027, \u0027true\u0027))"},{"line_number":70,"context_line":"        self.interval \u003d float(conf.get(\u0027interval\u0027, 3600))"},{"line_number":71,"context_line":"        self.stats_interval \u003d float(conf.get(\u0027stats_interval\u0027, 300))"},{"line_number":72,"context_line":"        self.swift_dir \u003d conf.get(\u0027swift_dir\u0027, \u0027/etc/swift\u0027)"},{"line_number":73,"context_line":"        self.account_ring \u003d None"},{"line_number":74,"context_line":"        self.container_ring \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"e826b16c_4830a251","line":71,"in_reply_to":"407bae59_7c068a70","updated":"2024-07-10 14:56:02.000000000","message":"Done","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":true,"context_lines":[{"line_number":103,"context_line":"            self.update_recon()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def update_recon(self):"},{"line_number":106,"context_line":"        # Called at the end of a reaper pass to update recon stats."},{"line_number":107,"context_line":"        update \u003d {\u0027reaping_in_progress\u0027:"},{"line_number":108,"context_line":"                  {\u0027all\u0027: self.stats}}"},{"line_number":109,"context_line":"        dump_recon_cache(update, self.rcache, self.logger)"}],"source_content_type":"text/x-python","patch_set":4,"id":"022d86fe_e1d6c944","line":106,"range":{"start_line":106,"start_character":10,"end_line":106,"end_character":67},"updated":"2024-07-08 04:11:49.000000000","message":"Not the only time it\u0027s called. Maybe we can just remove the comment?","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":37058,"name":"Mohamed Hassaneen","email":"mohammedashoor89@gmail.com","username":"mohamed"},"change_message_id":"0a52c69e3b733e7259b6b74285e9566df0018c6e","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            self.update_recon()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def update_recon(self):"},{"line_number":106,"context_line":"        # Called at the end of a reaper pass to update recon stats."},{"line_number":107,"context_line":"        update \u003d {\u0027reaping_in_progress\u0027:"},{"line_number":108,"context_line":"                  {\u0027all\u0027: self.stats}}"},{"line_number":109,"context_line":"        dump_recon_cache(update, self.rcache, self.logger)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fba2788_4693281e","line":106,"range":{"start_line":106,"start_character":10,"end_line":106,"end_character":67},"in_reply_to":"022d86fe_e1d6c944","updated":"2024-07-10 14:56:02.000000000","message":"Done","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":true,"context_lines":[{"line_number":287,"context_line":"        account \u003d info[\u0027account\u0027]"},{"line_number":288,"context_line":"        self.logger.info(\u0027Beginning pass on account %s\u0027, account)"},{"line_number":289,"context_line":"        self.reset_stats()"},{"line_number":290,"context_line":"        self.stats[\u0027account\u0027] \u003d account  # update current account being reaped"},{"line_number":291,"context_line":"        container_limit \u003d 1000"},{"line_number":292,"context_line":"        if container_shard is not None:"},{"line_number":293,"context_line":"            container_limit *\u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":4,"id":"77dbb24f_2e3779a0","line":290,"updated":"2024-07-08 04:11:49.000000000","message":"We tend not to put comments inline.. (although we probably do it places). I like the comment though, maybe just add it above the line.","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":37058,"name":"Mohamed Hassaneen","email":"mohammedashoor89@gmail.com","username":"mohamed"},"change_message_id":"0a52c69e3b733e7259b6b74285e9566df0018c6e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        account \u003d info[\u0027account\u0027]"},{"line_number":288,"context_line":"        self.logger.info(\u0027Beginning pass on account %s\u0027, account)"},{"line_number":289,"context_line":"        self.reset_stats()"},{"line_number":290,"context_line":"        self.stats[\u0027account\u0027] \u003d account  # update current account being reaped"},{"line_number":291,"context_line":"        container_limit \u003d 1000"},{"line_number":292,"context_line":"        if container_shard is not None:"},{"line_number":293,"context_line":"            container_limit *\u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":4,"id":"8c27438b_4482daaa","line":290,"in_reply_to":"77dbb24f_2e3779a0","updated":"2024-07-10 14:56:02.000000000","message":"Done","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4bd261bc545b16680004bf0e78741f307014b931","unresolved":false,"context_lines":[{"line_number":396,"context_line":"          of the account node dicts."},{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        try:"},{"line_number":399,"context_line":"            self.stats[\u0027containers_in_progress\u0027].append(container)"},{"line_number":400,"context_line":"            account_nodes \u003d list(account_nodes)"},{"line_number":401,"context_line":"            part, nodes \u003d self.get_container_ring().get_nodes(account, container)"},{"line_number":402,"context_line":"            node \u003d nodes[-1]"}],"source_content_type":"text/x-python","patch_set":7,"id":"62aa2d06_26aa2767","line":399,"updated":"2024-07-25 00:04:52.000000000","message":"Gotta love eventlet/greenlet for letting us avoid any locking :-)","commit_id":"93d73ebe588b6fa624640f87c5d7ddcfc49d2f66"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4bd261bc545b16680004bf0e78741f307014b931","unresolved":true,"context_lines":[{"line_number":491,"context_line":"                self.stats[\u0027containers_possibly_remaining\u0027] +\u003d 1"},{"line_number":492,"context_line":"                self.logger.increment(\u0027containers_possibly_remaining\u0027)"},{"line_number":493,"context_line":"        finally:"},{"line_number":494,"context_line":"            self.stats[\u0027containers_in_progress\u0027].remove(container)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def reap_object(self, account, container, container_partition,"},{"line_number":497,"context_line":"                    container_nodes, obj, policy_index):"}],"source_content_type":"text/x-python","patch_set":7,"id":"860708bb_d9f49a4f","line":494,"updated":"2024-07-25 00:04:52.000000000","message":"This might be one of those places where it makes sense to add a shim like\n```\ndef reap_container(self, ...):\n    self.stats[\u0027containers_in_progress\u0027].append(container)\n    try:\n        self._reap_container(...)\n    finally:\n        self.stats[\u0027containers_in_progress\u0027].remove(container)\n```\nand rename the existing `reap_container` to be `_reap_container`. It\u0027d save some churn related to increasing indent and re-folding long lines.","commit_id":"93d73ebe588b6fa624640f87c5d7ddcfc49d2f66"}],"swift/cli/recon.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":true,"context_lines":[{"line_number":463,"context_line":"            if k \u003d\u003d \u0027account\u0027:"},{"line_number":464,"context_line":"                print(\"[account]: %s\" % stats[\u0027account\u0027])"},{"line_number":465,"context_line":"                continue"},{"line_number":466,"context_line":"            if stats[k]:"},{"line_number":467,"context_line":"                computed \u003d self._gen_stats(stats[k], name\u003dk)"},{"line_number":468,"context_line":"                if computed[\u0027reported\u0027] \u003e 0:"},{"line_number":469,"context_line":"                    self._print_stats(computed)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a154282_b012bded","line":466,"range":{"start_line":466,"start_character":12,"end_line":466,"end_character":14},"updated":"2024-07-08 04:11:49.000000000","message":"If the point of the initial `if` above is to print out the text string as it can\u0027t be conputed. then this should probably be a elif, otherwise it\u0027ll be processed again","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":37058,"name":"Mohamed Hassaneen","email":"mohammedashoor89@gmail.com","username":"mohamed"},"change_message_id":"0a52c69e3b733e7259b6b74285e9566df0018c6e","unresolved":false,"context_lines":[{"line_number":463,"context_line":"            if k \u003d\u003d \u0027account\u0027:"},{"line_number":464,"context_line":"                print(\"[account]: %s\" % stats[\u0027account\u0027])"},{"line_number":465,"context_line":"                continue"},{"line_number":466,"context_line":"            if stats[k]:"},{"line_number":467,"context_line":"                computed \u003d self._gen_stats(stats[k], name\u003dk)"},{"line_number":468,"context_line":"                if computed[\u0027reported\u0027] \u003e 0:"},{"line_number":469,"context_line":"                    self._print_stats(computed)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7e495e27_ef51a396","line":466,"range":{"start_line":466,"start_character":12,"end_line":466,"end_character":14},"in_reply_to":"3a154282_b012bded","updated":"2024-07-10 14:56:02.000000000","message":"Done","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"}],"test/unit/account/test_reaper.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"91cc3ae80504aff7e957ef8a007facbe9151cd4b","unresolved":true,"context_lines":[{"line_number":230,"context_line":"    def test_delay_reaping_conf_default(self):"},{"line_number":231,"context_line":"        r \u003d reaper.AccountReaper({**self.conf})"},{"line_number":232,"context_line":"        self.assertEqual(r.delay_reaping, 0)"},{"line_number":233,"context_line":"        r \u003d reaper.AccountReaper({**self.conf, \u0027delay_reaping\u0027: \u0027\u0027})"},{"line_number":234,"context_line":"        self.assertEqual(r.delay_reaping, 0)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_delay_reaping_conf_set(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"e345c2d5_6e5db68c","line":233,"updated":"2024-07-08 04:11:49.000000000","message":"Python 2 doesn\u0027t like this as syntax.. yes I know we need to remove py2 and we\u0027re working on it. To make it supported on both you might need to change these to something like:\n\n  r \u003d reaper.AccountReaper(dict(self.conf, delay_reaping\u003d\u0027\u0027))","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"},{"author":{"_account_id":37058,"name":"Mohamed Hassaneen","email":"mohammedashoor89@gmail.com","username":"mohamed"},"change_message_id":"0a52c69e3b733e7259b6b74285e9566df0018c6e","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    def test_delay_reaping_conf_default(self):"},{"line_number":231,"context_line":"        r \u003d reaper.AccountReaper({**self.conf})"},{"line_number":232,"context_line":"        self.assertEqual(r.delay_reaping, 0)"},{"line_number":233,"context_line":"        r \u003d reaper.AccountReaper({**self.conf, \u0027delay_reaping\u0027: \u0027\u0027})"},{"line_number":234,"context_line":"        self.assertEqual(r.delay_reaping, 0)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_delay_reaping_conf_set(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"b779ee91_07488f83","line":233,"in_reply_to":"e345c2d5_6e5db68c","updated":"2024-07-10 14:56:02.000000000","message":"Done","commit_id":"0fd3ad05b6c39428b5540bb0154bbb1d55e08231"}]}
