)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow initializing session with connection retries"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Though we can now set ``connect_retires`` while creating an adapter object,"},{"line_number":10,"context_line":"that  would allow retries in case of connection timeout (ex. with session"},{"line_number":11,"context_line":"clients derived from Adapater/LegacyJsonAdapater), it can\u0027t be used in"},{"line_number":12,"context_line":"certain scenarios like endpoint discovery with auth plugin get_discovery()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_2f24300e","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":38},"updated":"2019-08-23 15:07:14.000000000","message":"typo here","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":12,"context_line":"certain scenarios like endpoint discovery with auth plugin get_discovery()"},{"line_number":13,"context_line":"or getting AccessInfo with get_access()/get_auth_ref()."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Having ``connect_retires`` in Session constructor would allow users with option"},{"line_number":16,"context_line":"of setting it when creating session objects (if they want) and can be overridden"},{"line_number":17,"context_line":"per service with the adapter interface."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_8f8444d5","line":15,"range":{"start_line":15,"start_character":20,"end_line":15,"end_character":23},"updated":"2019-08-23 15:07:14.000000000","message":"and here","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"}],"keystoneauth1/session.py":[{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"8a38e8a506b2442999fedf6490845b3c4269eeef","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    :param rate_semaphore: Semaphore to be used to control concurrency"},{"line_number":331,"context_line":"                           and rate limiting of requests. (optional,"},{"line_number":332,"context_line":"                           defaults to no concurrency or rate control)"},{"line_number":333,"context_line":"    :param int connect_retries: the maximum number of retries that should"},{"line_number":334,"context_line":"                                be attempted for connection errors."},{"line_number":335,"context_line":"                                (optional, defaults to 0 - never retry)."},{"line_number":336,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_422093b0","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":35},"updated":"2019-08-21 13:11:29.000000000","message":"Nit: The","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"d01d92371724212e683ed0d499d7818616f924e3","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    :param rate_semaphore: Semaphore to be used to control concurrency"},{"line_number":331,"context_line":"                           and rate limiting of requests. (optional,"},{"line_number":332,"context_line":"                           defaults to no concurrency or rate control)"},{"line_number":333,"context_line":"    :param int connect_retries: the maximum number of retries that should"},{"line_number":334,"context_line":"                                be attempted for connection errors."},{"line_number":335,"context_line":"                                (optional, defaults to 0 - never retry)."},{"line_number":336,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_5372a7e4","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":35},"in_reply_to":"7faddb67_422093b0","updated":"2019-08-21 14:42:46.000000000","message":"copypasta from L642","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    :param rate_semaphore: Semaphore to be used to control concurrency"},{"line_number":331,"context_line":"                           and rate limiting of requests. (optional,"},{"line_number":332,"context_line":"                           defaults to no concurrency or rate control)"},{"line_number":333,"context_line":"    :param int connect_retries: the maximum number of retries that should"},{"line_number":334,"context_line":"                                be attempted for connection errors."},{"line_number":335,"context_line":"                                (optional, defaults to 0 - never retry)."},{"line_number":336,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_eaecc6f5","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":35},"in_reply_to":"7faddb67_50cdba2d","updated":"2019-08-23 15:07:14.000000000","message":"It\u0027s not the responsibility of a patch submitter to correct unrelated pre-existing issues. Especially completely trivial ones.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"55c470d0f01fda271284dbf87a0e35b03eafffd6","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    :param rate_semaphore: Semaphore to be used to control concurrency"},{"line_number":331,"context_line":"                           and rate limiting of requests. (optional,"},{"line_number":332,"context_line":"                           defaults to no concurrency or rate control)"},{"line_number":333,"context_line":"    :param int connect_retries: the maximum number of retries that should"},{"line_number":334,"context_line":"                                be attempted for connection errors."},{"line_number":335,"context_line":"                                (optional, defaults to 0 - never retry)."},{"line_number":336,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_50cdba2d","line":333,"range":{"start_line":333,"start_character":32,"end_line":333,"end_character":35},"in_reply_to":"7faddb67_5372a7e4","updated":"2019-08-21 15:50:57.000000000","message":"We can correct that in L642 too.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"8a38e8a506b2442999fedf6490845b3c4269eeef","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                 app_name\u003dNone, app_version\u003dNone, additional_user_agent\u003dNone,"},{"line_number":348,"context_line":"                 discovery_cache\u003dNone, split_loggers\u003dNone,"},{"line_number":349,"context_line":"                 collect_timing\u003dFalse, rate_semaphore\u003dNone,"},{"line_number":350,"context_line":"                 connect_retries\u003d0):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        self.auth \u003d auth"},{"line_number":353,"context_line":"        self.session \u003d _construct_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_5d3cf8bd","line":350,"range":{"start_line":350,"start_character":32,"end_line":350,"end_character":34},"updated":"2019-08-21 13:11:29.000000000","message":"IMO we can assign the initial value of connect_retries to None same as the other parameters for consistency.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"d01d92371724212e683ed0d499d7818616f924e3","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                 app_name\u003dNone, app_version\u003dNone, additional_user_agent\u003dNone,"},{"line_number":348,"context_line":"                 discovery_cache\u003dNone, split_loggers\u003dNone,"},{"line_number":349,"context_line":"                 collect_timing\u003dFalse, rate_semaphore\u003dNone,"},{"line_number":350,"context_line":"                 connect_retries\u003d0):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        self.auth \u003d auth"},{"line_number":353,"context_line":"        self.session \u003d _construct_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7337a3ff","line":350,"range":{"start_line":350,"start_character":32,"end_line":350,"end_character":34},"in_reply_to":"7faddb67_5d3cf8bd","updated":"2019-08-21 14:42:46.000000000","message":"I don\u0027t think we should as it\u0027s not a immutable type and consistent with L611.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"55c470d0f01fda271284dbf87a0e35b03eafffd6","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                 app_name\u003dNone, app_version\u003dNone, additional_user_agent\u003dNone,"},{"line_number":348,"context_line":"                 discovery_cache\u003dNone, split_loggers\u003dNone,"},{"line_number":349,"context_line":"                 collect_timing\u003dFalse, rate_semaphore\u003dNone,"},{"line_number":350,"context_line":"                 connect_retries\u003d0):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        self.auth \u003d auth"},{"line_number":353,"context_line":"        self.session \u003d _construct_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_f0f4e656","line":350,"range":{"start_line":350,"start_character":32,"end_line":350,"end_character":34},"in_reply_to":"7faddb67_7337a3ff","updated":"2019-08-21 15:50:57.000000000","message":"Maybe we can have more opinions over this.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                 app_name\u003dNone, app_version\u003dNone, additional_user_agent\u003dNone,"},{"line_number":348,"context_line":"                 discovery_cache\u003dNone, split_loggers\u003dNone,"},{"line_number":349,"context_line":"                 collect_timing\u003dFalse, rate_semaphore\u003dNone,"},{"line_number":350,"context_line":"                 connect_retries\u003d0):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        self.auth \u003d auth"},{"line_number":353,"context_line":"        self.session \u003d _construct_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0a712245","line":350,"range":{"start_line":350,"start_character":32,"end_line":350,"end_character":34},"in_reply_to":"7faddb67_f0f4e656","updated":"2019-08-23 15:07:14.000000000","message":"\u003e Maybe we can have more opinions over this.\n\nThis is textbook bikeshedding.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"843cb92dba9bb6052c2f58f30b8de8424a42555e","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                 app_name\u003dNone, app_version\u003dNone, additional_user_agent\u003dNone,"},{"line_number":348,"context_line":"                 discovery_cache\u003dNone, split_loggers\u003dNone,"},{"line_number":349,"context_line":"                 collect_timing\u003dFalse, rate_semaphore\u003dNone,"},{"line_number":350,"context_line":"                 connect_retries\u003d0):"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        self.auth \u003d auth"},{"line_number":353,"context_line":"        self.session \u003d _construct_session(session)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_593de58b","line":350,"range":{"start_line":350,"start_character":32,"end_line":350,"end_character":34},"in_reply_to":"7faddb67_f0f4e656","updated":"2019-08-21 18:15:49.000000000","message":"I prefer (for simple consistency), \"None\" here with the rest of the default arguments, however, 0 is also 100% acceptable as long as the default behavior of None and 0 are the same as the current (prior to this patch) behavior.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                user_agent\u003dNone, redirect\u003dNone, authenticated\u003dNone,"},{"line_number":609,"context_line":"                endpoint_filter\u003dNone, auth\u003dNone, requests_auth\u003dNone,"},{"line_number":610,"context_line":"                raise_exc\u003dTrue, allow_reauth\u003dTrue, log\u003dTrue,"},{"line_number":611,"context_line":"                endpoint_override\u003dNone, connect_retries\u003d0, logger\u003dNone,"},{"line_number":612,"context_line":"                allow\u003dNone, client_name\u003dNone, client_version\u003dNone,"},{"line_number":613,"context_line":"                microversion\u003dNone, microversion_service_type\u003dNone,"},{"line_number":614,"context_line":"                status_code_retries\u003d0, retriable_status_codes\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_ca06aace","line":611,"range":{"start_line":611,"start_character":40,"end_line":611,"end_character":57},"updated":"2019-08-23 15:07:14.000000000","message":"If you want to worry about defaults, this is the one to worry about, because it means that if you set the Session\u0027s connect_retries there\u0027s no way to override it back to 0 for an individual request.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"568590d4ebb33a70578917aa56d8ae1ac2de38d1","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                user_agent\u003dNone, redirect\u003dNone, authenticated\u003dNone,"},{"line_number":609,"context_line":"                endpoint_filter\u003dNone, auth\u003dNone, requests_auth\u003dNone,"},{"line_number":610,"context_line":"                raise_exc\u003dTrue, allow_reauth\u003dTrue, log\u003dTrue,"},{"line_number":611,"context_line":"                endpoint_override\u003dNone, connect_retries\u003d0, logger\u003dNone,"},{"line_number":612,"context_line":"                allow\u003dNone, client_name\u003dNone, client_version\u003dNone,"},{"line_number":613,"context_line":"                microversion\u003dNone, microversion_service_type\u003dNone,"},{"line_number":614,"context_line":"                status_code_retries\u003d0, retriable_status_codes\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3f2a067e","line":611,"range":{"start_line":611,"start_character":40,"end_line":611,"end_character":57},"in_reply_to":"7faddb67_ca06aace","updated":"2019-08-26 13:47:00.000000000","message":"In that case, using None here and explicitly checking for 0 would make sense.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9231bf7e184bf74d18a2b10e5185852d034036d7","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                user_agent\u003dNone, redirect\u003dNone, authenticated\u003dNone,"},{"line_number":609,"context_line":"                endpoint_filter\u003dNone, auth\u003dNone, requests_auth\u003dNone,"},{"line_number":610,"context_line":"                raise_exc\u003dTrue, allow_reauth\u003dTrue, log\u003dTrue,"},{"line_number":611,"context_line":"                endpoint_override\u003dNone, connect_retries\u003d0, logger\u003dNone,"},{"line_number":612,"context_line":"                allow\u003dNone, client_name\u003dNone, client_version\u003dNone,"},{"line_number":613,"context_line":"                microversion\u003dNone, microversion_service_type\u003dNone,"},{"line_number":614,"context_line":"                status_code_retries\u003d0, retriable_status_codes\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_bf91169d","line":611,"range":{"start_line":611,"start_character":40,"end_line":611,"end_character":57},"updated":"2019-08-26 14:33:32.000000000","message":"Zane had an interesting point about this in ps 3. If the Session attribute for retries is set, then a caller can\u0027t explicitly override a single request back to 0 by passing in:\n\n  s.request(\u0027/v3/users\u0027, \u0027GET\u0027, connect_retries\u003d0)\n\nThat call will always result in Session\u0027s connect_retries attribute being used if it is set to anything other than 0.\n\nI added a test case that shows the broken behavior in a follow on patch:\n\nhttps://review.opendev.org/#/c/678576/\n\nFeel free to incorporate that test into this patch.","commit_id":"7b84dc5e889eedc9adf4a28a66da9b0400fccbb4"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"1259b45fac6dcd4792324902bf837c46dfa2b1c9","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                user_agent\u003dNone, redirect\u003dNone, authenticated\u003dNone,"},{"line_number":609,"context_line":"                endpoint_filter\u003dNone, auth\u003dNone, requests_auth\u003dNone,"},{"line_number":610,"context_line":"                raise_exc\u003dTrue, allow_reauth\u003dTrue, log\u003dTrue,"},{"line_number":611,"context_line":"                endpoint_override\u003dNone, connect_retries\u003d0, logger\u003dNone,"},{"line_number":612,"context_line":"                allow\u003dNone, client_name\u003dNone, client_version\u003dNone,"},{"line_number":613,"context_line":"                microversion\u003dNone, microversion_service_type\u003dNone,"},{"line_number":614,"context_line":"                status_code_retries\u003d0, retriable_status_codes\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_155da9eb","line":611,"range":{"start_line":611,"start_character":40,"end_line":611,"end_character":57},"in_reply_to":"7faddb67_bf91169d","updated":"2019-08-26 15:16:24.000000000","message":"The change here is this should be changed to a None and session retries remain a zero. Coupled with changing line 738 to:\n\n    if connect_retries is None:\n        connect_retries \u003d self._connect_retries\n\nA test case to handle the 0 case ^ should be written.\n\nAs an aside, should we disallow negative retries?","commit_id":"7b84dc5e889eedc9adf4a28a66da9b0400fccbb4"}],"keystoneauth1/tests/unit/test_session.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"843cb92dba9bb6052c2f58f30b8de8424a42555e","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        self.assertIn(\u0027--cacert\u0027, self.logger.output)"},{"line_number":422,"context_line":"        self.assertIn(path_to_certs, self.logger.output)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def _test_connect_retries(self, retries\u003d0, in_session\u003dFalse):"},{"line_number":425,"context_line":"        self.stub_url(\u0027GET\u0027, exc\u003drequests.exceptions.Timeout())"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        call_args \u003d {\u0027url\u0027: self.TEST_URL}"},{"line_number":428,"context_line":"        if retries and in_session:"},{"line_number":429,"context_line":"            session \u003d client_session.Session(connect_retries\u003dretries)"},{"line_number":430,"context_line":"        else:"},{"line_number":431,"context_line":"            session \u003d client_session.Session()"},{"line_number":432,"context_line":"            call_args[\u0027connect_retries\u0027] \u003d retries"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        with mock.patch(\u0027time.sleep\u0027) as m:"},{"line_number":435,"context_line":"            self.assertRaises(exceptions.ConnectTimeout,"},{"line_number":436,"context_line":"                              session.get,"},{"line_number":437,"context_line":"                              **call_args)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"            self.assertEqual(retries, m.call_count)"},{"line_number":440,"context_line":"            # 3 retries finishing with 2.0 means 0.5, 1.0 and 2.0"},{"line_number":441,"context_line":"            m.assert_called_with(2.0)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"        # we count retries so there will be one initial request + 3 retries"},{"line_number":444,"context_line":"        self.assertThat(self.requests_mock.request_history,"},{"line_number":445,"context_line":"                        matchers.HasLength(retries + 1))"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    def test_connect_retries(self):"},{"line_number":448,"context_line":"        self._test_connect_retries(retries\u003d3)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_19a3ed9f","line":445,"range":{"start_line":424,"start_character":0,"end_line":445,"end_character":56},"updated":"2019-08-21 18:15:49.000000000","message":"I would prefer this to be duplicated in each test rather than having logic that specifically handles \"in-session\" separate from \"call_args\".\n\nAlso, I recommend not starting with \"test\" or \"_test\" to disambiguate what is in-fact a test-case.\n\nMy recommendation is to structure the code like this:\n\n\n    def _connect_retries_check(self, session, call_args\u003dNone):\n\tcall_args \u003d call_args or {}\n        self.stub_url(\u0027GET\u0027, exc\u003drequests.exceptions.Timeout())\n\n        call_args[\u0027url\u0027] \u003d self.TEST_URL\n\n        with mock.patch(\u0027time.sleep\u0027) as m:\n            self.assertRaises(exceptions.ConnectTimeout,\n                              session.get,\n                              **call_args)\n\n            self.assertEqual(retries, m.call_count)\n            # 3 retries finishing with 2.0 means 0.5, 1.0 and 2.0\n            m.assert_called_with(2.0)\n\n        # we count retries so there will be one initial request + 3 retries\n        self.assertThat(self.requests_mock.request_history,\n                        matchers.HasLength(retries + 1))\n\n\n    def test_session_connect_retries(self):\n\t\tsession \u003d client_session.Session(connect_retries\u003dretries)\n        self._connect_retries_check(session\u003dsession)\n\n\n    def test_call_args_connect_retries_session_init(self):\n\t\tsession \u003d client_session.Session()\n\t\tcall_args \u003d {\u0027connect_retries\u0027: 3}\n        self._connect_retries_check(session\u003dsession, \n\t\t                            call_args\u003dcall_args)\n\n\n\nNote that session is now explicitly expected, so the test sets up the session as it requires (purview of the test case rather than the magic of the \"test\" that is called from within) and additional call args are optional, should be passed as a dict if needed.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"}],"releasenotes/notes/bug-1840235-ef2946d149ac329c.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"695587dcfb338926334d9f556029530dc9936f5c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_bc3ad5e2","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"updated":"2019-08-21 08:15:21.000000000","message":"it\u0027s a feature, not a bug fix","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"c981f1ae9c06125efab5df3963dde7ada0a870dc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_c9e02ecf","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_096f2660","updated":"2019-08-21 09:45:03.000000000","message":"Sure, if adding as a feature here does not impact it\u0027s backportability, then I\u0027m fine.","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b740aa60f77434766943d782c6ff3a1bd635c987","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_096f2660","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_37659eaf","updated":"2019-08-21 09:40:30.000000000","message":"Well, the backporting question is separate. From the library API standpoint it clearly adds a feature: new argument. A bug fix would be something that users will just get by updating the library (and only it).","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fd9df60766646a0e9dff32a1ad8911401bc58d99","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_49ff5e33","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_49519e61","updated":"2019-08-21 09:59:07.000000000","message":"\u003e It may be a feature in keystoneauth\n\nIt is 100% a feature here, and this discussion is currently scoped to keystoneauth.\n\n\u003e I hope there would not be counter arguments from other folks that this is feature and can\u0027t be backported\n\nI\u0027m not overly optimistic here. But, as I mentioned, it does not depend on the text you write here.","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ecef009b47ad6a1559e4e8a2974ca217e6f3ab1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_d9bb150c","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_49ff5e33","updated":"2019-08-21 17:48:14.000000000","message":"This is new functionality. This is not fixing a bug, regardless of what is written in the release note. We use \"RFE\" Bugs in keystone (all keystone projects) for new features. The text here has no impact on my comments, I\u0027ll likewise add this same comment on the current patchset.\n\nPutting on my stable core hat, this is not something we typically backport (new functionality), we almost always recommend folks moving forward to new releases, especially with keystoneauth. Keystoneauth\u0027s contract is explicitly designed to ensure as much compatibility across versions as possible.","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"c22dda4820538174d9032e2fe5ddb22eb50ea140","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_49519e61","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_a92b72e8","updated":"2019-08-21 09:57:03.000000000","message":"Not sure if I would agree with that assertion. It may be a feature in keystoneauth, but it actually fixes a *bug* (which arises with the usage of the library) for it\u0027s consumers in stable branches.\n\nThat said, I hope there would not be counter arguments from other folks that this is feature and can\u0027t be backported, as we need to fix the issue in stable branches..","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"24dd881a6ce8c5688e1fb21212648f1cc636d530","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_37659eaf","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_bc3ad5e2","updated":"2019-08-21 08:40:44.000000000","message":"Well, we\u0027ve been debating that in the review comments. Unless there is another way to fix the ConnectTimeout errors that affects scalability in stable branches, I would want this backported.\n\nIf it\u0027s just about the changing it in the releasenote, I can do that.","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"733b12a2a2bd2904227aa7f3fc72be593d2e9b1c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_a92b72e8","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_c9e02ecf","updated":"2019-08-21 09:47:11.000000000","message":"You\u0027re coming from a wrong perspective on it. It *is* a feature, hence it must be marked as such. And it is what affects the backportability, not the text here.","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"492b47997e5886afebf0080a2d1074be0eef5015","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_6f954832","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":6},"in_reply_to":"7faddb67_d9bb150c","updated":"2019-08-23 15:07:14.000000000","message":"Yeah, it\u0027s a new feature in the library that\u0027s required to fix a bug. So I agree with the release note describing it as a feature.\n\nI\u0027m not sure where we stand on backporting stuff to libraries like this when bug fixes depend on it - I don\u0027t think the stable review guidelines were written with libraries in mind. I think SemVer would require a minor version bump, and that\u0027s possibly a good way to handle it. But all of this is a question for any future stable branch review :)","commit_id":"afd7083ffe19f99e1e7911091e19c840bcb66272"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"8a38e8a506b2442999fedf6490845b3c4269eeef","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_dd92284b","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"updated":"2019-08-21 13:11:29.000000000","message":"You can link the bug here in the release note like - \n[`bug xxx \u003chttps://bugs.launchpad.net/keystone/+bug/xxx\u003e`_]","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"792d55f848db8cb12b9924106ce20f43cf0b599a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_c5e24230","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"in_reply_to":"7faddb67_10042249","updated":"2019-08-21 21:36:13.000000000","message":"The bug report contains some useful information. We could link to it by convention [0] or by calling it out in the description below. For example:\n\n  This would specifically help avoid a\n  scalability `issue \u003chttps://launchpad.net/bugs/1840235\u003e`_ ...","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"55c470d0f01fda271284dbf87a0e35b03eafffd6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_10042249","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"in_reply_to":"7faddb67_4e0e7c32","updated":"2019-08-21 15:50:57.000000000","message":"Yes this a feature but still we can tag the bug-ids in release notes for reference, since you have added the bug tag in your commit message.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"},{"author":{"_account_id":8833,"name":"Rabi Mishra","email":"ramishra@redhat.com","username":"rabi"},"change_message_id":"d01d92371724212e683ed0d499d7818616f924e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``connect_retries`` to Session.__init__(), that can then be used"},{"line_number":5,"context_line":"    by projects when creating session objects, to set the required number of"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_4e0e7c32","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":9},"in_reply_to":"7faddb67_dd92284b","updated":"2019-08-21 14:42:46.000000000","message":"It does not fix the bug alone and this change has been added as a feature in the releasenote, so, IMO not required.","commit_id":"7c22972915b5d582d5c1f132252898e9ed95a75f"}]}
