)]}'
{"swift/common/memcached.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"45adaa7303156e9c4f8d1c4db81cfd3976a88ae5","unresolved":true,"context_lines":[{"line_number":350,"context_line":"            except MemcachePoolTimeout as e:"},{"line_number":351,"context_line":"                self._exception_occurred(server, e, cmd, pool_start_time,"},{"line_number":352,"context_line":"                                         action\u003d\u0027getting a connection\u0027,"},{"line_number":353,"context_line":"                                         got_connection\u003dFalse)"},{"line_number":354,"context_line":"            except (Exception, Timeout) as e:"},{"line_number":355,"context_line":"                # create() failed inside get(). If get() took a placeholder"},{"line_number":356,"context_line":"                # from the pool, it has put it back. got_connection\u003dFalse"}],"source_content_type":"text/x-python","patch_set":2,"id":"174bb433_bcbb0a9b","line":353,"updated":"2026-09-13 18:03:18.000000000","message":"I\u0027m starting to wonder how much extra value we really get out of this block -- without it, we\u0027d still catch it in the `except (Exception, Timeout)` block, and the action being `connecting` isn\u0027t exactly *inaccurate*...","commit_id":"96f4751e2838970768f894ab6881867119f16e90"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"efed7021980d6b44c2d5fa1a95b2bbc160eccb95","unresolved":true,"context_lines":[{"line_number":350,"context_line":"            except MemcachePoolTimeout as e:"},{"line_number":351,"context_line":"                self._exception_occurred(server, e, cmd, pool_start_time,"},{"line_number":352,"context_line":"                                         action\u003d\u0027getting a connection\u0027,"},{"line_number":353,"context_line":"                                         got_connection\u003dFalse)"},{"line_number":354,"context_line":"            except (Exception, Timeout) as e:"},{"line_number":355,"context_line":"                # create() failed inside get(). If get() took a placeholder"},{"line_number":356,"context_line":"                # from the pool, it has put it back. got_connection\u003dFalse"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe299d5_44a0748b","line":353,"in_reply_to":"174bb433_bcbb0a9b","updated":"2026-09-14 14:57:41.000000000","message":"That\u0027s right, but \"getting a connection\" might still be useful for an operator?\n\n\"Timeout getting a connection to memcached\" (pool full, memcache might be ok) vs. \"Timeout connecting to memcached\" (memcache/network issue)?\n\nOn the other side both issues are counted using the same \u0027memcached.\u003cMETHOD\u003e.timeout.timing` statsd metric.","commit_id":"96f4751e2838970768f894ab6881867119f16e90"}],"test/unit/common/test_memcached.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"45adaa7303156e9c4f8d1c4db81cfd3976a88ae5","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            # new connection: the pool releases the slot, nothing to put back"},{"line_number":1214,"context_line":"            self.assertEqual("},{"line_number":1215,"context_line":"                [], list(memcache_client._get_conns(self.set_cmd)))"},{"line_number":1216,"context_line":"            self.assertEqual([], list(pool.free_items))"},{"line_number":1217,"context_line":"            self.assertEqual(0, pool.current_size)"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"            # placeholder taken from the pool: get() itself puts it back"}],"source_content_type":"text/x-python","patch_set":2,"id":"c75d2928_209dd49f","line":1216,"updated":"2026-09-13 18:03:18.000000000","message":"Back out the fix, test pops here with `Lists differ: [] !\u003d [(None, None)]` -- but then the pool still says its `current_size` is zero!","commit_id":"96f4751e2838970768f894ab6881867119f16e90"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"efed7021980d6b44c2d5fa1a95b2bbc160eccb95","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            # new connection: the pool releases the slot, nothing to put back"},{"line_number":1214,"context_line":"            self.assertEqual("},{"line_number":1215,"context_line":"                [], list(memcache_client._get_conns(self.set_cmd)))"},{"line_number":1216,"context_line":"            self.assertEqual([], list(pool.free_items))"},{"line_number":1217,"context_line":"            self.assertEqual(0, pool.current_size)"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"            # placeholder taken from the pool: get() itself puts it back"}],"source_content_type":"text/x-python","patch_set":2,"id":"c1453739_225620ad","line":1216,"in_reply_to":"c75d2928_209dd49f","updated":"2026-09-14 14:57:41.000000000","message":"Yes, that\u0027s the issue: slot released, placeholder is put back, but not counted - `current_size` is off by one","commit_id":"96f4751e2838970768f894ab6881867119f16e90"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"45adaa7303156e9c4f8d1c4db81cfd3976a88ae5","unresolved":false,"context_lines":[{"line_number":1221,"context_line":"            pool.put((None, None))"},{"line_number":1222,"context_line":"            with self.assertRaises(OSError):"},{"line_number":1223,"context_line":"                pool.get()"},{"line_number":1224,"context_line":"            self.assertEqual([(None, None)], list(pool.free_items))"},{"line_number":1225,"context_line":"            self.assertEqual(1, pool.current_size)"},{"line_number":1226,"context_line":""},{"line_number":1227,"context_line":"    def test_item_size_warning_threshold(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"cfdf79c9_ab090a46","line":1224,"updated":"2026-09-13 18:03:18.000000000","message":"...and if we ignore that failure, it *also* will pop here, this time with `Lists differ: [(None, None)] !\u003d []`... which seems a little odd to me... oh! Because we\u0027re no longer testing the `MemcacheRing` but the `MemcacheConnPool`!","commit_id":"96f4751e2838970768f894ab6881867119f16e90"}]}
