)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"880a961310c362674473671898526717da93129f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-27 14:40:27 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"proxy: Add a chance to skip memcache for get_*_info calls"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1a9cd7610f685be03b1753836296b9af8f2b2609"},{"line_number":10,"context_line":"Closes-Bug: #1883324"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"126c253f_4f1868aa","line":7,"updated":"2022-02-04 07:27:50.000000000","message":"This could use more meat/context.","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32b3cb45366e81e20269e833e201953d2bd54ee6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-27 14:40:27 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"proxy: Add a chance to skip memcache for get_*_info calls"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1a9cd7610f685be03b1753836296b9af8f2b2609"},{"line_number":10,"context_line":"Closes-Bug: #1883324"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"662b1397_158cc0a5","line":7,"in_reply_to":"126c253f_4f1868aa","updated":"2022-02-25 21:06:23.000000000","message":"Done","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"789bf915fe0c76d12c034b01f294d8536bbab678","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a709b0e8_48c68529","updated":"2021-12-16 17:00:40.000000000","message":"A lot of the test churn seems unfortunate; it might no longer be necessary when I stop raising the AttributeError. OTOH, it makes our fakes that much closer to the real...","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"81b9c4014096ec43372d7c98012b2a5b7586d695","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9a85db1c_d041e682","updated":"2021-12-20 23:32:42.000000000","message":"recheck","commit_id":"9b66665b918acc42cfc93d811cb47ea6e809891d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5e4b908933e2c91f6c0fd60d4fb3103ce179a979","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f74e3269_98fcd1b0","updated":"2021-12-18 05:43:59.000000000","message":"recheck","commit_id":"9b66665b918acc42cfc93d811cb47ea6e809891d"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"c5e44eeef313c5eb9fef1dafc730f3cd3508ece4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"3f3e9d8d_82dbcb0c","updated":"2022-01-08 01:29:47.000000000","message":"recheck","commit_id":"564a280a2b5263ec6c15f446aeb04ca220b47b18"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"85ff5157588612ed76f786db4647b7427e26599d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"7b7fea97_9b25f5b9","updated":"2022-02-04 06:36:58.000000000","message":"It\u0027s looking good. Want to take it for a spin myself. Got to take Lucy to swimming lessions though. So either later tonight or on my Monday.","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"880a961310c362674473671898526717da93129f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b17081d8_20ac0153","updated":"2022-02-04 07:27:50.000000000","message":"Looks like it needs a rebase anyway; I\u0027ll re-spin in the morning.","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32b3cb45366e81e20269e833e201953d2bd54ee6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"ab3833a1_7d568d0e","updated":"2022-02-25 21:06:23.000000000","message":"Forgot to actually address what I said I\u0027d address ;-)","commit_id":"aab201a86ebbf0fbbf31570f659e50b5d45a58a7"}],"swift/common/utils.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"789bf915fe0c76d12c034b01f294d8536bbab678","unresolved":true,"context_lines":[{"line_number":3624,"context_line":"                to_yield \u003d next(self)"},{"line_number":3625,"context_line":"            except StopIteration:"},{"line_number":3626,"context_line":"                break"},{"line_number":3627,"context_line":"            yield to_yield"},{"line_number":3628,"context_line":"            self.spawn(func, *args)"},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"        # Drain the pile"}],"source_content_type":"text/x-python","patch_set":3,"id":"3db535bb_0f39f3a7","line":3627,"updated":"2021-12-16 17:00:40.000000000","message":"Not sure why this hadn\u0027t bitten us before, but see https://www.python.org/dev/peps/pep-0479/","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"85ff5157588612ed76f786db4647b7427e26599d","unresolved":true,"context_lines":[{"line_number":3624,"context_line":"                to_yield \u003d next(self)"},{"line_number":3625,"context_line":"            except StopIteration:"},{"line_number":3626,"context_line":"                break"},{"line_number":3627,"context_line":"            yield to_yield"},{"line_number":3628,"context_line":"            self.spawn(func, *args)"},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"        # Drain the pile"}],"source_content_type":"text/x-python","patch_set":3,"id":"f3058cd4_6d1c6216","line":3627,"in_reply_to":"3db535bb_0f39f3a7","updated":"2022-02-04 06:36:58.000000000","message":"Wow yeah. Did you start seeing it while working on this?","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"880a961310c362674473671898526717da93129f","unresolved":true,"context_lines":[{"line_number":3624,"context_line":"                to_yield \u003d next(self)"},{"line_number":3625,"context_line":"            except StopIteration:"},{"line_number":3626,"context_line":"                break"},{"line_number":3627,"context_line":"            yield to_yield"},{"line_number":3628,"context_line":"            self.spawn(func, *args)"},{"line_number":3629,"context_line":""},{"line_number":3630,"context_line":"        # Drain the pile"}],"source_content_type":"text/x-python","patch_set":3,"id":"28ff4fe4_e83150c5","line":3627,"in_reply_to":"f3058cd4_6d1c6216","updated":"2022-02-04 07:27:50.000000000","message":"Yeah -- not sure why it started popping up for me, though. Might not even be strictly needed now (I think I first saw it back when I had changes down in the actual memcache client). Still probably a good idea, but maybe I should break it out as a separate patch.","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"}],"swift/proxy/controllers/base.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"789bf915fe0c76d12c034b01f294d8536bbab678","unresolved":true,"context_lines":[{"line_number":751,"context_line":"            # Only the middleware entry-points get a reference to the"},{"line_number":752,"context_line":"            # proxy-server app; if a middleware composes itself as multiple"},{"line_number":753,"context_line":"            # filters, we\u0027ll just have to choose a reasonable default"},{"line_number":754,"context_line":"            raise # Let\u0027s see what tests do with this"},{"line_number":755,"context_line":"            pct \u003d 0.0"},{"line_number":756,"context_line":"        else:"},{"line_number":757,"context_line":"            if container:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5d6d8181_ae5636ba","line":754,"updated":"2021-12-16 17:00:40.000000000","message":"They\u0027re pretty happy with it, now that I\u0027ve fixed up s3api and versioning ;-)\n\nEncryption is another obvious place where we do the single-entry-point-is-composed-of-multiple-filters thing, but it doesn\u0027t need get_account_info/get_container_info.","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"}],"swift/proxy/server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"789bf915fe0c76d12c034b01f294d8536bbab678","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def __init__(self, conf, logger\u003dNone, account_ring\u003dNone,"},{"line_number":194,"context_line":"                 container_ring\u003dNone):"},{"line_number":195,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":196,"context_line":"        if conf is None:"},{"line_number":197,"context_line":"            conf \u003d {}"},{"line_number":198,"context_line":"        if logger is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"983a007b_0f8fca32","line":195,"updated":"2021-12-16 17:00:40.000000000","message":"This is for the sake of tests which instantiate an Application directly rather than via loadapp().","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"85ff5157588612ed76f786db4647b7427e26599d","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def __init__(self, conf, logger\u003dNone, account_ring\u003dNone,"},{"line_number":194,"context_line":"                 container_ring\u003dNone):"},{"line_number":195,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":196,"context_line":"        if conf is None:"},{"line_number":197,"context_line":"            conf \u003d {}"},{"line_number":198,"context_line":"        if logger is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"e8098d0b_1e988a6b","line":195,"in_reply_to":"983a007b_0f8fca32","updated":"2022-02-04 06:36:58.000000000","message":"And will be replaced by loadapp in normal running. Fair enough. Maybe turn your gerrit comment into an inline comment so it makes sense in the future ;)","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"880a961310c362674473671898526717da93129f","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def __init__(self, conf, logger\u003dNone, account_ring\u003dNone,"},{"line_number":194,"context_line":"                 container_ring\u003dNone):"},{"line_number":195,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":196,"context_line":"        if conf is None:"},{"line_number":197,"context_line":"            conf \u003d {}"},{"line_number":198,"context_line":"        if logger is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ec6580b6_2bd6947a","line":195,"in_reply_to":"e8098d0b_1e988a6b","updated":"2022-02-04 07:27:50.000000000","message":"#willfix","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"32b3cb45366e81e20269e833e201953d2bd54ee6","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def __init__(self, conf, logger\u003dNone, account_ring\u003dNone,"},{"line_number":194,"context_line":"                 container_ring\u003dNone):"},{"line_number":195,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":196,"context_line":"        if conf is None:"},{"line_number":197,"context_line":"            conf \u003d {}"},{"line_number":198,"context_line":"        if logger is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4dd2f105_3f198a47","line":195,"in_reply_to":"ec6580b6_2bd6947a","updated":"2022-02-25 21:06:23.000000000","message":"Done","commit_id":"a3e9fff646475a731fa016a049e8e79c9052a256"}],"test/unit/common/middleware/s3api/__init__.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"85ff5157588612ed76f786db4647b7427e26599d","unresolved":true,"context_lines":[{"line_number":28,"context_line":"from test.unit.common.middleware.s3api.helpers import FakeSwift"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FakeApp(object):"},{"line_number":32,"context_line":"    container_existence_skip_cache \u003d 0.0"},{"line_number":33,"context_line":"    account_existence_skip_cache \u003d 0.0"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"f73d3692_0fb67054","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":22},"updated":"2022-02-04 06:36:58.000000000","message":"Out of scope, but a do wonder (if we ever have time) a refactor of a more global base FakeApp for testing would be useful so we don\u0027t recreate it all over the place :)\n\nMaybe we need an internship happening 😋","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"880a961310c362674473671898526717da93129f","unresolved":true,"context_lines":[{"line_number":28,"context_line":"from test.unit.common.middleware.s3api.helpers import FakeSwift"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class FakeApp(object):"},{"line_number":32,"context_line":"    container_existence_skip_cache \u003d 0.0"},{"line_number":33,"context_line":"    account_existence_skip_cache \u003d 0.0"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"e62f18a8_dfca6614","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":22},"in_reply_to":"f73d3692_0fb67054","updated":"2022-02-04 07:27:50.000000000","message":"Yeah, I\u0027ve been thinking about that too. *So many* FakeApps/FakeSwifts all over the place, it seems like we could unify them a bit.\n\nFWIW I did something like that with FakeMemcaches in https://review.opendev.org/c/openstack/swift/+/823717 in the lead-up to this. Even then, though, I missed a bunch of FakeCaches...","commit_id":"d91f7e5c2904fe9631f597fd9d4650bfb57d40c0"}]}
