)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"b7eb1ef2274ab54656acfc8e5aa70b858c85233a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d5716476_9ab14a08","updated":"2023-02-15 15:34:26.000000000","message":"currently ops can configure TCP_KEEPIDLE\n\nthis chnage allows configuration of TCP_KEEPCNT, and even the option to turn off SO_KEEPALIVE\n\n... but it would be *better* if it also allowed ops to configure TCP_KEEPINTVL\n\n","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"1161110352c8f7f4e6636c7d70c6ea8a86303fa7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"57b1ebff_15a61624","updated":"2023-02-15 21:37:36.000000000","message":"nice split Clay. If your not going to right away, I might add the idle in a follow up so I can have a bit of a play in my vsaio. ","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7677bf201c9978d183e332086d748e19af25a58f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"69abee11_43b173f7","in_reply_to":"d5716476_9ab14a08","updated":"2023-02-15 17:35:53.000000000","message":"\u003e ... but it would be *better* if it also allowed ops to configure TCP_KEEPINTVL\n\nYes! Any reason not to?","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"}],"swift/common/wsgi.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7677bf201c9978d183e332086d748e19af25a58f","unresolved":true,"context_lines":[{"line_number":194,"context_line":"            \u0027invalid value for tcp_keepalive: %r\u0027 % conf[\u0027tcp_keepalive\u0027])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    try:"},{"line_number":197,"context_line":"        keepidle \u003d int(conf.get(\u0027keep_idle\u0027, 600))"},{"line_number":198,"context_line":"        if keepidle \u003c\u003d 0 or keepidle \u003e\u003d 2 ** 15 - 1:"},{"line_number":199,"context_line":"            raise ValueError()"},{"line_number":200,"context_line":"    except (ValueError, KeyError, TypeError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"28aaf0e3_23b53b12","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":48},"updated":"2023-02-15 17:35:53.000000000","message":"Off-topic: seems weird in retrospect that we\u0027ve got keep_idle defaulting to 10x our client_timeout ....","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"1161110352c8f7f4e6636c7d70c6ea8a86303fa7","unresolved":true,"context_lines":[{"line_number":194,"context_line":"            \u0027invalid value for tcp_keepalive: %r\u0027 % conf[\u0027tcp_keepalive\u0027])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    try:"},{"line_number":197,"context_line":"        keepidle \u003d int(conf.get(\u0027keep_idle\u0027, 600))"},{"line_number":198,"context_line":"        if keepidle \u003c\u003d 0 or keepidle \u003e\u003d 2 ** 15 - 1:"},{"line_number":199,"context_line":"            raise ValueError()"},{"line_number":200,"context_line":"    except (ValueError, KeyError, TypeError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"544af876_6a2411ff","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":48},"in_reply_to":"28aaf0e3_23b53b12","updated":"2023-02-15 21:37:36.000000000","message":"yeah, but at least it\u0027s better the default on my Fedora laptop of 7200:\n\n  $ sysctl -a |grep keepalive\n  net.ipv4.tcp_keepalive_intvl \u003d 75\n  net.ipv4.tcp_keepalive_probes \u003d 9\n  net.ipv4.tcp_keepalive_time \u003d 7200\n\nTo give us an additional connectivity check I wonder if making these smaller then the client_idle setting could allow us drop disconnected connections, and use the client_idle as the big hammer if things are just taking too long. Something like (off the top of my head):\n\n  keep_idle \u003d 5\n  keep_cnt \u003d 3\n  keep_interval \u003d 2\n\nAnd see what hit the empty packets every few seconds gives us in regards to performance.\n\nMight have a play with it.","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7185add57a67436c29724c8e87a53d78ff8cd603","unresolved":true,"context_lines":[{"line_number":194,"context_line":"            \u0027invalid value for tcp_keepalive: %r\u0027 % conf[\u0027tcp_keepalive\u0027])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    try:"},{"line_number":197,"context_line":"        keepidle \u003d int(conf.get(\u0027keep_idle\u0027, 600))"},{"line_number":198,"context_line":"        if keepidle \u003c\u003d 0 or keepidle \u003e\u003d 2 ** 15 - 1:"},{"line_number":199,"context_line":"            raise ValueError()"},{"line_number":200,"context_line":"    except (ValueError, KeyError, TypeError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"662414cd_841122bf","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":48},"in_reply_to":"544af876_6a2411ff","updated":"2023-02-15 21:39:06.000000000","message":"sorry client_timeout rather then client_idle","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7677bf201c9978d183e332086d748e19af25a58f","unresolved":true,"context_lines":[{"line_number":224,"context_line":"                          \u0027after trying for %(timeout)s seconds\u0027) % {"},{"line_number":225,"context_line":"                              \u0027addr\u0027: bind_addr[0], \u0027port\u0027: bind_addr[1],"},{"line_number":226,"context_line":"                              \u0027timeout\u0027: bind_timeout})"},{"line_number":227,"context_line":"    # in my experience, sockets can hang around forever without keepalive"},{"line_number":228,"context_line":"    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, int(keepalive))"},{"line_number":229,"context_line":"    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)"},{"line_number":230,"context_line":"    if hasattr(socket, \u0027TCP_KEEPIDLE\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f331ea33_9e91c77d","line":227,"updated":"2023-02-15 17:35:53.000000000","message":"Should we move this comment up around where we pick a default for the config?","commit_id":"7eb3e816ddc908978df13d44347bc2623e9518ff"}]}
