)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"fea7ab37ecc73c7bfc2087f23dfd231736ec68ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0172df76_ca7d9da8","updated":"2026-05-28 13:22:02.000000000","message":"This implementation looks solid. I left a few comments about improving documentation and unit test coverage, but apart from that it looks good to me. I particularly liked that is a minimal and focused change.\n\nI tested this in a SAIO machine setting USE_EVENTLET\u003d1, performed normal swift operations and monitored the logs. Everything worked just fine, no concerns.","commit_id":"39f10b00b644813613f839f82a8694e6471d0c95"}],"swift/common/concurrency.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"fea7ab37ecc73c7bfc2087f23dfd231736ec68ca","unresolved":true,"context_lines":[{"line_number":387,"context_line":"                raise StopIteration()"},{"line_number":388,"context_line":"            return self._futures.popleft().result()"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def trampoline(fd, read\u003dNone, write\u003dNone, timeout\u003dNone, **kwargs):"},{"line_number":391,"context_line":"        rlist \u003d [fd] if read else []"},{"line_number":392,"context_line":"        wlist \u003d [fd] if write else []"},{"line_number":393,"context_line":"        select.select(rlist, wlist, [fd], timeout)"}],"source_content_type":"text/x-python","patch_set":7,"id":"cc80f893_b29dde1a","line":390,"updated":"2026-05-28 13:22:02.000000000","message":"How do you feel about adding unit test for threading-mode trampoline implementation?","commit_id":"39f10b00b644813613f839f82a8694e6471d0c95"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"fea7ab37ecc73c7bfc2087f23dfd231736ec68ca","unresolved":true,"context_lines":[{"line_number":387,"context_line":"                raise StopIteration()"},{"line_number":388,"context_line":"            return self._futures.popleft().result()"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def trampoline(fd, read\u003dNone, write\u003dNone, timeout\u003dNone, **kwargs):"},{"line_number":391,"context_line":"        rlist \u003d [fd] if read else []"},{"line_number":392,"context_line":"        wlist \u003d [fd] if write else []"},{"line_number":393,"context_line":"        select.select(rlist, wlist, [fd], timeout)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5327dd03_be3efb46","line":390,"updated":"2026-05-28 13:22:02.000000000","message":"Suggestion: add a docstring to improve documentation","commit_id":"39f10b00b644813613f839f82a8694e6471d0c95"},{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"fea7ab37ecc73c7bfc2087f23dfd231736ec68ca","unresolved":true,"context_lines":[{"line_number":388,"context_line":"            return self._futures.popleft().result()"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def trampoline(fd, read\u003dNone, write\u003dNone, timeout\u003dNone, **kwargs):"},{"line_number":391,"context_line":"        rlist \u003d [fd] if read else []"},{"line_number":392,"context_line":"        wlist \u003d [fd] if write else []"},{"line_number":393,"context_line":"        select.select(rlist, wlist, [fd], timeout)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bb1b2f81_51c91638","line":391,"updated":"2026-05-28 13:22:02.000000000","message":"Suggestion: following the fail-fast principle, I would suggest to add an extra validation here.\n\n```\nif not read and not write:\n    raise ValueError(\"trampoline() requires read\u003dTrue or write\u003dTrue\")\n```","commit_id":"39f10b00b644813613f839f82a8694e6471d0c95"}],"swift/common/utils/logs.py":[{"author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy"},"change_message_id":"fea7ab37ecc73c7bfc2087f23dfd231736ec68ca","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                # Tell eventlet to suspend the current greenthread until"},{"line_number":135,"context_line":"                # self.rfd becomes readable. This will happen when someone"},{"line_number":136,"context_line":"                # else writes to self.wfd."},{"line_number":137,"context_line":"                # In threading mode this simply sleeps shortly, allowing"},{"line_number":138,"context_line":"                # other threads to continue in the meantime"},{"line_number":139,"context_line":"                trampoline(self.rfd, read\u003dTrue)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"61855fac_fcbbc63f","line":137,"updated":"2026-05-28 13:22:02.000000000","message":"Suggestion: I worry that \"sleeps shortly\" might be a bit misleading since it actually blocks indefinitely until fd is ready. My suggestion would be just improve the use of \"sleeps shortly\" for better documentation.","commit_id":"39f10b00b644813613f839f82a8694e6471d0c95"}]}
