)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"1575fff899120cc5c7ff62abc6a134fdb8e339b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"16ef6c2a_7ca7156a","updated":"2026-05-13 08:50:22.000000000","message":"recheck\n\nprobe tests failed with \"umount: /mnt/sdb1: target is busy\". Time to land https://review.opendev.org/c/openstack/swift/+/980785","commit_id":"01f235fc22a90d6aa728aef630caefa7900f5a7d"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"882c5ae83e92eb354ee1ebb93c3629fda90de520","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6c72ae2e_ccd11d76","updated":"2026-05-31 09:33:16.000000000","message":"recheck","commit_id":"9d000bebe16ee9379d0be1c936c27e47ea7fd6a9"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"bdd6c153ce2d33261de7b7466548e821912574a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f24b1ad7_0125ad5d","updated":"2026-06-29 12:56:54.000000000","message":"That is looking good already, just dropped a question and a small suggestion, but this patch provides a solid thread-based replacement for eventlet.GreenPile with correct ordered-result semantics. Also the implementation is clean and has a good test coverage.","commit_id":"98c9e5cee4bb7f34251676af50a78a3822d09276"}],"swift/common/concurrency.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"bdd6c153ce2d33261de7b7466548e821912574a6","unresolved":true,"context_lines":[{"line_number":383,"context_line":"        \"\"\""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        def __init__(self, size_or_pool\u003d1000):"},{"line_number":386,"context_line":"            if isinstance(size_or_pool, ThreadPoolExecutor):"},{"line_number":387,"context_line":"                self._pool \u003d size_or_pool"},{"line_number":388,"context_line":"            else:"},{"line_number":389,"context_line":"                self._pool \u003d SwiftPool(size_or_pool)"}],"source_content_type":"text/x-python","patch_set":11,"id":"195cbd7e_abbead4a","line":386,"updated":"2026-06-29 12:56:54.000000000","message":"Question: shouldn\u0027t be `SwiftPool` instead of `ThreadPoolExecutor`?\n\n```\n  if isinstance(size_or_pool, SwiftPool):\n      self._pool \u003d size_or_pool\n  else:\n      self._pool \u003d SwiftPool(size_or_pool)\n\n```","commit_id":"98c9e5cee4bb7f34251676af50a78a3822d09276"}],"test/unit/common/test_concurrency.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"bdd6c153ce2d33261de7b7466548e821912574a6","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import threading"},{"line_number":19,"context_line":"from swift.common.concurrency import Pool, USE_EVENTLET, Timeout, tpool, \\"},{"line_number":20,"context_line":"    SwiftPool, sleep, SwiftPile"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@unittest.skipIf(USE_EVENTLET, \"Only tested when eventlet is disabled\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"48d1e6c1_9625368d","line":20,"updated":"2026-06-29 12:56:54.000000000","message":"Suggestion: add simple test to verify empty pile e.g\n\n```\ndef test_empty_pile(self):\n    pile \u003d SwiftPile(2)\n    self.assertEqual(list(pile), [])\n```","commit_id":"98c9e5cee4bb7f34251676af50a78a3822d09276"}]}
