)]}'
{"openstack_election/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fbdddf6938df1e53d1a1309b6168415d4cd643be","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    # Try up to 3 times"},{"line_number":47,"context_line":"    retry \u003d requests.Session()"},{"line_number":48,"context_line":"    retry.mount(\"https://\", requests.adapters.HTTPAdapter(max_retries\u003d3))"},{"line_number":49,"context_line":"    raw \u003d retry.get(url\u003durl, params\u003dparams, headers\u003dheaders)"},{"line_number":50,"context_line":"    if verbose \u003e\u003d 2:"},{"line_number":51,"context_line":"        print(\"Queried: %s\" % raw.url)"},{"line_number":52,"context_line":"    return raw"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2170d0_021f8b54","line":49,"updated":"2025-10-15 15:37:08.000000000","message":"This is already retrying here.","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"fbdddf6938df1e53d1a1309b6168415d4cd643be","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        \u0027https://openstackid-resources.openstack.org/api/public/v1/members\u0027,"},{"line_number":124,"context_line":"        params, headers\u003d{\u0027Accept\u0027: \u0027application/json\u0027}, verbose\u003dverbose)"},{"line_number":125,"context_line":"    count \u003d 0"},{"line_number":126,"context_line":"    while raw.status_code !\u003d 200 and count \u003c 3:"},{"line_number":127,"context_line":"        count +\u003d 1"},{"line_number":128,"context_line":"    if raw.status_code \u003d\u003d 200:"},{"line_number":129,"context_line":"        result \u003d decode_json(raw)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bec083b1_8c8d8eef","line":126,"updated":"2025-10-15 15:37:08.000000000","message":"Isn\u0027t this just checking the result repeatedly without actually making the `requester()` call again? Seems like the existing retry logic inside `requester` has this covered, but doesn\u0027t explain why this change was necessary. Maybe the `retry` needs a larger backoff or more attempts?","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bea15f4a87e2229aa5e9ba38d151efa32c0c72a0","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        \u0027https://openstackid-resources.openstack.org/api/public/v1/members\u0027,"},{"line_number":124,"context_line":"        params, headers\u003d{\u0027Accept\u0027: \u0027application/json\u0027}, verbose\u003dverbose)"},{"line_number":125,"context_line":"    count \u003d 0"},{"line_number":126,"context_line":"    while raw.status_code !\u003d 200 and count \u003c 3:"},{"line_number":127,"context_line":"        count +\u003d 1"},{"line_number":128,"context_line":"    if raw.status_code \u003d\u003d 200:"},{"line_number":129,"context_line":"        result \u003d decode_json(raw)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f9da1ccd_bb819150","line":126,"in_reply_to":"7af9f253_bef1d539","updated":"2025-10-15 16:04:22.000000000","message":"Or maybe worth introducing `tenacity` as a requirement. Though this is a pretty basic retry, so maybe not worth adding more dependencies for it.","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"8f158d84818e8d78826a3b842387806838aa895a","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        \u0027https://openstackid-resources.openstack.org/api/public/v1/members\u0027,"},{"line_number":124,"context_line":"        params, headers\u003d{\u0027Accept\u0027: \u0027application/json\u0027}, verbose\u003dverbose)"},{"line_number":125,"context_line":"    count \u003d 0"},{"line_number":126,"context_line":"    while raw.status_code !\u003d 200 and count \u003c 3:"},{"line_number":127,"context_line":"        count +\u003d 1"},{"line_number":128,"context_line":"    if raw.status_code \u003d\u003d 200:"},{"line_number":129,"context_line":"        result \u003d decode_json(raw)"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0f81f1e_80c8a065","line":126,"in_reply_to":"bec083b1_8c8d8eef","updated":"2025-10-15 15:50:06.000000000","message":"Good point about failing to re-call the requester.\n\nAs far as the built-in retries in the requester itself, my reading of the requests docs seemed to indicate that only triggered on network errors (resets, disconnects, timeouts, aborted handshakes...), but that if there was an HTTP response then it considered that good regardless of what the HTTP status code might be.\n\nWhat I was going for is to retry on non-ok HTTP status codes, as I\u0027ve had them temporarily crop up on lengthy query sets.","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cb1d4e2a586bcccfa6e02cc49b6c18f32612a3c8","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        \u0027https://openstackid-resources.openstack.org/api/public/v1/members\u0027,"},{"line_number":124,"context_line":"        params, headers\u003d{\u0027Accept\u0027: \u0027application/json\u0027}, verbose\u003dverbose)"},{"line_number":125,"context_line":"    count \u003d 0"},{"line_number":126,"context_line":"    while raw.status_code !\u003d 200 and count \u003c 3:"},{"line_number":127,"context_line":"        count +\u003d 1"},{"line_number":128,"context_line":"    if raw.status_code \u003d\u003d 200:"},{"line_number":129,"context_line":"        result \u003d decode_json(raw)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7af9f253_bef1d539","line":126,"in_reply_to":"cd0af819_7afb37dd","updated":"2025-10-15 16:01:52.000000000","message":"Ah, makes sense. So yeah, just missing a re-call of the requester in that loop and this should be good.","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"2ce2297317b11f66749a900ca55b727f98f903a5","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        \u0027https://openstackid-resources.openstack.org/api/public/v1/members\u0027,"},{"line_number":124,"context_line":"        params, headers\u003d{\u0027Accept\u0027: \u0027application/json\u0027}, verbose\u003dverbose)"},{"line_number":125,"context_line":"    count \u003d 0"},{"line_number":126,"context_line":"    while raw.status_code !\u003d 200 and count \u003c 3:"},{"line_number":127,"context_line":"        count +\u003d 1"},{"line_number":128,"context_line":"    if raw.status_code \u003d\u003d 200:"},{"line_number":129,"context_line":"        result \u003d decode_json(raw)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd0af819_7afb37dd","line":126,"in_reply_to":"f0f81f1e_80c8a065","updated":"2025-10-15 15:54:28.000000000","message":"\"this applies only to failed DNS lookups, socket connections and connection timeouts, never to requests where data has made it to the server\" https://docs.python-requests.org/en/latest/api/#requests.adapters.HTTPAdapter","commit_id":"99240f9cceba39bf986e583c90b9bbf956bd1ba3"}]}
