)]}'
{"swift/common/bench.py":[{"author":{"_account_id":2696,"name":"Darrell Bishop","email":"dbishop@nvidia.com","username":"darrellb"},"change_message_id":"d963c8dccf264450a92f92b98e89666d316c9980","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def read(self, desired_size):"},{"line_number":102,"context_line":"        chunk_size \u003d min(self.size - self.pos, desired_size)"},{"line_number":103,"context_line":"        self.pos +\u003d chunk_size"},{"line_number":104,"context_line":"        return \u00270\u0027 * chunk_size"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class ConnectionPool(eventlet.pools.Pool):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FveI%3D","line":104,"updated":"2012-11-08 22:32:15.000000000","message":"Won\u0027t this return 2 * chunk_size bytes (chunk_size_bytes twice for each of 2 read() invocations) when size is 1.5 * chunk_size?","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"},{"author":{"_account_id":2696,"name":"Darrell Bishop","email":"dbishop@nvidia.com","username":"darrellb"},"change_message_id":"8492e4506624a2031aa77ce6af8bc39368b645fd","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def read(self, desired_size):"},{"line_number":102,"context_line":"        chunk_size \u003d min(self.size - self.pos, desired_size)"},{"line_number":103,"context_line":"        self.pos +\u003d chunk_size"},{"line_number":104,"context_line":"        return \u00270\u0027 * chunk_size"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class ConnectionPool(eventlet.pools.Pool):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2Fvbs%3D","line":104,"in_reply_to":"AAAALn%2F%2Fvb4%3D","updated":"2012-11-08 22:52:11.000000000","message":"Never mind :)","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"656f50d2253083e1b55f2de0bbeeb6f0499eb17e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def read(self, desired_size):"},{"line_number":102,"context_line":"        chunk_size \u003d min(self.size - self.pos, desired_size)"},{"line_number":103,"context_line":"        self.pos +\u003d chunk_size"},{"line_number":104,"context_line":"        return \u00270\u0027 * chunk_size"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"class ConnectionPool(eventlet.pools.Pool):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2Fvb4%3D","line":104,"in_reply_to":"AAAALn%2F%2FveI%3D","updated":"2012-11-08 22:50:40.000000000","message":"If I understand what you\u0027re saying correctly, then I think the call to min() keeps that from happening.\n\nLet\u0027s say size \u003d 30.\n\n # self.pos \u003d 0\n f.read(20) \u003d\u003e 20 bytes\n # now self.pos \u003d 20\n f.read(20) \u003d\u003e 10 bytes\n # now self.pos \u003d 30\n f.read(20) \u003d\u003e 0 bytes (EOF-ish)","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"}],"swift/common/direct_client.py":[{"author":{"_account_id":1216,"name":"gholt","email":"z-launchpad@brim.net","username":"gholt"},"change_message_id":"25e73572f02fe106a25cc69eef40b2969ab703b7","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    with Timeout(conn_timeout):"},{"line_number":325,"context_line":"        conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], part,"},{"line_number":326,"context_line":"                \u0027PUT\u0027, path, headers\u003dheaders)"},{"line_number":327,"context_line":"    for chunk in contents:"},{"line_number":328,"context_line":"        conn.send(chunk)"},{"line_number":329,"context_line":"    with Timeout(response_timeout):"},{"line_number":330,"context_line":"        resp \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FvL0%3D","line":327,"updated":"2012-11-09 04:19:50.000000000","message":"This change means that any old calls to this passing a string will end up calling conn.send for each character. Maybe putting just above this:\n\nif isinstance(contents, basestring):\n    contents \u003d [contents]\n\nor changing this to:\n\nif isinstance(contents, basestring):\n    conn.send(contents)\nelse:\n    for chunk in contents:\n        conn.send(chunk)","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"},{"author":{"_account_id":1216,"name":"gholt","email":"z-launchpad@brim.net","username":"gholt"},"change_message_id":"a6cbb67454863fe5e34ceb150ade19dab0287bf3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    with Timeout(conn_timeout):"},{"line_number":325,"context_line":"        conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], part,"},{"line_number":326,"context_line":"                \u0027PUT\u0027, path, headers\u003dheaders)"},{"line_number":327,"context_line":"    for chunk in contents:"},{"line_number":328,"context_line":"        conn.send(chunk)"},{"line_number":329,"context_line":"    with Timeout(response_timeout):"},{"line_number":330,"context_line":"        resp \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2FukQ%3D","line":327,"in_reply_to":"AAAALn%2F%2Fuss%3D","updated":"2012-11-09 18:39:34.000000000","message":"Yes, although I must admit, I know of no other such users. ;-)","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"d52941a5548e880278b08f0598b3667168377d08","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    with Timeout(conn_timeout):"},{"line_number":325,"context_line":"        conn \u003d http_connect(node[\u0027ip\u0027], node[\u0027port\u0027], node[\u0027device\u0027], part,"},{"line_number":326,"context_line":"                \u0027PUT\u0027, path, headers\u003dheaders)"},{"line_number":327,"context_line":"    for chunk in contents:"},{"line_number":328,"context_line":"        conn.send(chunk)"},{"line_number":329,"context_line":"    with Timeout(response_timeout):"},{"line_number":330,"context_line":"        resp \u003d conn.getresponse()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALn%2F%2Fuss%3D","line":327,"in_reply_to":"AAAALn%2F%2FvL0%3D","updated":"2012-11-09 17:36:23.000000000","message":"I thought about that, but I looked for callers of this method and only found the one in bench.py.\n\nOr are you concerned about other people that use direct_client?","commit_id":"205acb688864568cf868c7ab83c15c58dbc6ba35"}]}
