)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"20661fc51fe3b950141320f2eccb0467b9fbbe84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"39ced752_fc47448c","updated":"2026-10-20 22:10:27.000000000","message":"Scale numbers for this change, from the load test of the oslo.messaging HTTP-RPC driver\u0027s discovery: simulated compute hosts each in one group, checking it about every 15 s, plus conductor calls every 10 s per host and fanouts to the schedulers. memcached 1.6.18, 50 simulated hosts per process, one machine.\n\nWithout this change, at 1,000 hosts: heartbeat passes took 44.7 s at p99 and calls 5.6 s at p99; registrations lapsed, so 19% of directed casts found no server; memcached used 2.75 cores, and the clients 19.3.\n\nWith this change:\n- 1,000 hosts: heartbeat p99 56 ms, calls 8.9 ms p99, every cast delivered; memcached 0.14 core, clients 0.84.\n- 2,000 hosts: 63 ms, 11.2 ms, every cast delivered; memcached 0.52 core, clients 2.9.\n- 3,000 hosts: 79 ms, 15.9 ms, every cast delivered; memcached 1.43 cores, clients 8.0.\n\nThe keys read still grow with the square of the group size across all hosts, so this does not make memcached suit very large groups, but the per-member round trips are gone.","commit_id":"85e90e609482eca8becc36c6615654c8d2c4c3ea"}],"releasenotes/notes/memcached-get-members-one-request-634ba464b4ce1674.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ff44d347d8512c0a231d7ac9806c8afafc7bbc3","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The memcached driver now checks the members of a group with one request,"},{"line_number":5,"context_line":"    instead of one request per member, when it reads the group\u0027s members or"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"8be11adc_e19e1447","line":2,"updated":"2026-10-21 13:59:19.000000000","message":"I think this likely qualifies as a bugfix, even if we can\u0027t backport it too far (due to dependencies)\n\n```suggestion\nfixes:\n```\n\nAlso, if you can file a bug report and link it in the commit message I\u0027ll happily review any backports.","commit_id":"85e90e609482eca8becc36c6615654c8d2c4c3ea"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1c44420199958147a5a25b575ad6529c63fa7065","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The memcached driver now checks the members of a group with one request,"},{"line_number":5,"context_line":"    instead of one request per member, when it reads the group\u0027s members or"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"26d6cf9d_5f940239","line":2,"in_reply_to":"8be11adc_e19e1447","updated":"2026-10-21 18:43:26.000000000","message":"Done in PS2: the note is under `fixes:` now. I filed https://bugs.launchpad.net/bugs/2171768 and the commit message closes it. Thanks for offering to review the backports!","commit_id":"85e90e609482eca8becc36c6615654c8d2c4c3ea"}],"tooz/tests/drivers/test_memcache.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ff44d347d8512c0a231d7ac9806c8afafc7bbc3","unresolved":true,"context_lines":[{"line_number":89,"context_line":"    def test_get_members_reads_member_keys_at_once(self, mock_client_cls):"},{"line_number":90,"context_line":"        mock_client \u003d mock.MagicMock()"},{"line_number":91,"context_line":"        mock_client_cls.return_value \u003d mock_client"},{"line_number":92,"context_line":"        member_id \u003d tests.get_random_uuid()"},{"line_number":93,"context_line":"        coord \u003d cast("},{"line_number":94,"context_line":"            memcached.MemcachedDriver,"},{"line_number":95,"context_line":"            coordination.get_coordinator(self.FAKE_URL, member_id),"},{"line_number":96,"context_line":"        )"},{"line_number":97,"context_line":"        coord.start()"},{"line_number":98,"context_line":"        alive \u003d tests.get_random_uuid()"},{"line_number":99,"context_line":"        dead \u003d tests.get_random_uuid()"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a0e6acb_bd669fc8","line":96,"range":{"start_line":92,"start_character":43,"end_line":96,"end_character":9},"updated":"2026-10-21 13:59:19.000000000","message":"Can we just do\n\n```suggestion\n        member_id \u003d tests.get_random_uuid()\n        coord \u003d coordination.get_coordinator(self.FAKE_URL, member_id)\n        assert isinstance(coord, memcached.MemcachedDriver)\n```\n\nhere?","commit_id":"85e90e609482eca8becc36c6615654c8d2c4c3ea"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1c44420199958147a5a25b575ad6529c63fa7065","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        coord \u003d cast("},{"line_number":94,"context_line":"            memcached.MemcachedDriver,"},{"line_number":95,"context_line":"            coordination.get_coordinator(self.FAKE_URL, member_id),"},{"line_number":96,"context_line":"        )"},{"line_number":97,"context_line":"        coord.start()"},{"line_number":98,"context_line":"        alive \u003d tests.get_random_uuid()"},{"line_number":99,"context_line":"        dead \u003d tests.get_random_uuid()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ccca696c_6aa915ac","line":96,"in_reply_to":"6a0e6acb_bd669fc8","updated":"2026-10-21 18:43:26.000000000","message":"Done in PS2, and the `typing.cast` import is gone.","commit_id":"85e90e609482eca8becc36c6615654c8d2c4c3ea"}]}
