)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ee00e520a8b73337892f1f905f7b27e2b9df0c69","unresolved":false,"context_lines":[{"line_number":11,"context_line":"2. Logs current attempts"},{"line_number":12,"context_line":"3. Waits a little longer prior to the next SSH attempt"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I878362899b4cf81143c02c15c55936b33cf65ec8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAUH%2F%2B0xg%3D","line":14,"updated":"2014-01-21 17:59:32.000000000","message":"I guess the issue was reported to lp? there is a bug to attach to this commit?","commit_id":"49ccd058837d1864bc593b1201909533001884fe"}],"tempest/common/ssh.py":[{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"f0eaaf12cdb0346a4eca9af7f7663c9dd4947fca","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":89,"context_line":"                                                user\u003dself.username,"},{"line_number":90,"context_line":"                                                password\u003dself.password)"},{"line_number":91,"context_line":"                bsleep +\u003d backoff"},{"line_number":92,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FXy8%3D","line":91,"updated":"2014-01-14 14:35:03.000000000","message":"If you add instead of multiply, how does a default value of \"1.01\" make sense? For me this value looks more like a percentage value?","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5ecf2b190205c951bb1a2c4d7884567aab972902","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":89,"context_line":"                                                user\u003dself.username,"},{"line_number":90,"context_line":"                                                password\u003dself.password)"},{"line_number":91,"context_line":"                bsleep +\u003d backoff"},{"line_number":92,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BrPA%3D","line":91,"in_reply_to":"AAAAUH%2F%2FJqQ%3D","updated":"2014-01-23 10:12:17.000000000","message":"the exponential linear is not good here the reason for that is that the sleep is always around 1 second. that is very problematic here. in the case that if fails, we will wait 1 sec then 2 sec then 3 sec etc.","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6fde962d81fd3cac675c6bd0e46230dd39bf4858","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":89,"context_line":"                                                user\u003dself.username,"},{"line_number":90,"context_line":"                                                password\u003dself.password)"},{"line_number":91,"context_line":"                bsleep +\u003d backoff"},{"line_number":92,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FJqQ%3D","line":91,"in_reply_to":"AAAAUH%2F%2FXic%3D","updated":"2014-01-16 23:17:25.000000000","message":"The sum is linear. The multiply was to implement an exponential back-off - see the comments on https://review.openstack.org/#/c/29285/","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6a2066de3fcde1e5e2442f1c0a4f259cca6fdbc4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":89,"context_line":"                                                user\u003dself.username,"},{"line_number":90,"context_line":"                                                password\u003dself.password)"},{"line_number":91,"context_line":"                bsleep +\u003d backoff"},{"line_number":92,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FXic%3D","line":91,"in_reply_to":"AAAAUH%2F%2FXy8%3D","updated":"2014-01-14 15:29:05.000000000","message":"the purpose here is to give the server time. the multiplication would always sleep with ~ 1 second. \nthis sleeps first for one, then 2, then three ...","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7c63447962f1daa1de4221dc47a0fb417642c2da","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":95,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":96,"context_line":"                attempts +\u003d 1"},{"line_number":97,"context_line":"                time.sleep(bsleep)"},{"line_number":98,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":99,"context_line":"                    paramiko.AuthenticationException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FLwg%3D","line":96,"updated":"2014-01-16 17:04:30.000000000","message":"The attempts should be increased before the warning.\nIn this case we should not start counting from 0.","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5ecf2b190205c951bb1a2c4d7884567aab972902","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":94,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":95,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":96,"context_line":"                attempts +\u003d 1"},{"line_number":97,"context_line":"                time.sleep(bsleep)"},{"line_number":98,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":99,"context_line":"                    paramiko.AuthenticationException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BrO0%3D","line":96,"in_reply_to":"AAAAUH%2F%2FLwg%3D","updated":"2014-01-23 10:12:17.000000000","message":"Done","commit_id":"49ccd058837d1864bc593b1201909533001884fe"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"242bde1ee5e30a85719bcc605c2c418f7cf94fc3","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":93,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":94,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":95,"context_line":"                time.sleep(bsleep)"},{"line_number":96,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":97,"context_line":"                    paramiko.AuthenticationException):"},{"line_number":98,"context_line":"                LOG.exception(\"Authentication error\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BqXM%3D","line":95,"updated":"2014-01-23 12:48:49.000000000","message":"So maybe I\u0027m too sleepy this morning, but seems to me that lines from L89 to L95 will never be touched, if we go inside the \u0027if not _is_time_out\u0027 it will continue and come back to the begin of the while loop, and if we go to the else case, it raises an exception.","commit_id":"5fab55c88fdec7f45c06e80633bcb95040187a88"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5103877137fa80355d52e4ed02cacd80319f65e8","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""},{"line_number":93,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":94,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":95,"context_line":"                time.sleep(bsleep)"},{"line_number":96,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":97,"context_line":"                    paramiko.AuthenticationException):"},{"line_number":98,"context_line":"                LOG.exception(\"Authentication error\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BpHg%3D","line":95,"in_reply_to":"AAAAUH%2F%2BqXM%3D","updated":"2014-01-23 16:16:33.000000000","message":"good catch.","commit_id":"5fab55c88fdec7f45c06e80633bcb95040187a88"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"242bde1ee5e30a85719bcc605c2c418f7cf94fc3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            while _transport.is_active() and not _timed_out:"},{"line_number":112,"context_line":"                time.sleep(5)"},{"line_number":113,"context_line":"                _timed_out \u003d self._is_timed_out(_start_time)"},{"line_number":114,"context_line":"            ssh.close()"},{"line_number":115,"context_line":"        except (EOFError, paramiko.AuthenticationException, socket.error):"},{"line_number":116,"context_line":"            return"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BqVg%3D","line":114,"updated":"2014-01-23 12:48:49.000000000","message":"Question: I haven\u0027t dig into ssh yet, but since we\u0027re catching AuthenticationException here, don\u0027t we want to do the same with BadHostKeyException since we treated them as equal on the _get_ssh_connection method?","commit_id":"5fab55c88fdec7f45c06e80633bcb95040187a88"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5103877137fa80355d52e4ed02cacd80319f65e8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            while _transport.is_active() and not _timed_out:"},{"line_number":112,"context_line":"                time.sleep(5)"},{"line_number":113,"context_line":"                _timed_out \u003d self._is_timed_out(_start_time)"},{"line_number":114,"context_line":"            ssh.close()"},{"line_number":115,"context_line":"        except (EOFError, paramiko.AuthenticationException, socket.error):"},{"line_number":116,"context_line":"            return"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BpH8%3D","line":114,"in_reply_to":"AAAAUH%2F%2BqVg%3D","updated":"2014-01-23 16:16:33.000000000","message":"good point, i will update","commit_id":"5fab55c88fdec7f45c06e80633bcb95040187a88"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"38050a54576ed401383fc81decf4df5f554b7e70","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":92,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":93,"context_line":"                time.sleep(bsleep)"},{"line_number":94,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":95,"context_line":"                    paramiko.AuthenticationException):"},{"line_number":96,"context_line":"                LOG.exception(\"Authentication error\")"},{"line_number":97,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F94bo%3D","line":94,"updated":"2014-02-02 15:52:56.000000000","message":"This part is completely unnecessary .\n class AuthenticationException (SSHException)\n class BadHostKeyException (SSHException)\nThey are sub classes of the SSHException.\n\nAlso when the cloud-init runs (or before it runs) temporary  this type of issues can happen, but they usually gone on the next attempt.","commit_id":"252638d116cc3d72a8eb0e46662bb48eb8b8bb3d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a004c7f63f11965a30674816120526c878791c29","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                            \" Retry after %d seconds.\","},{"line_number":92,"context_line":"                            self.username, self.host, e, attempts, bsleep)"},{"line_number":93,"context_line":"                time.sleep(bsleep)"},{"line_number":94,"context_line":"            except (paramiko.BadHostKeyException,"},{"line_number":95,"context_line":"                    paramiko.AuthenticationException):"},{"line_number":96,"context_line":"                LOG.exception(\"Authentication error\")"},{"line_number":97,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F91YM%3D","line":94,"in_reply_to":"AAAAUH%2F94bo%3D","updated":"2014-02-03 14:31:09.000000000","message":"the point is to try and get as much information as possible. i have removed this but still feel that it is valuable in debugging","commit_id":"252638d116cc3d72a8eb0e46662bb48eb8b8bb3d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"41822878a50f8b8290431be5b6a6fce58fd4440a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":85,"context_line":"                                                user\u003dself.username,"},{"line_number":86,"context_line":"                                                password\u003dself.password)"},{"line_number":87,"context_line":"                bsleep +\u003d backoff"},{"line_number":88,"context_line":"                attempts +\u003d 1"},{"line_number":89,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":90,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F91L4%3D","line":87,"updated":"2014-02-03 15:07:33.000000000","message":"I think sleep times with exp backoff should be something like\n1,2,4,8,16...\nprevious code did\n1.5, 1.515, 1.5305 and so on\nNow your code does\n1.5, 2.5, 3.5, and so on\n\nI think you are now achieving something closer to the \u0027desired\u0027 progression, but not in the right way. Why don\u0027t change the backoff to 2?\n\nDisclaimer: I\u0027m asking this without knowing why it was set to 1.01 in the first place, so I might be missing something.","commit_id":"20e46b6eb81978cd78f99b66be1baa5bc7b14812"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"2ae6364c688bd7e3ce2937473397e1ca16f553d3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                    raise exceptions.SSHTimeout(host\u003dself.host,"},{"line_number":85,"context_line":"                                                user\u003dself.username,"},{"line_number":86,"context_line":"                                                password\u003dself.password)"},{"line_number":87,"context_line":"                bsleep +\u003d backoff"},{"line_number":88,"context_line":"                attempts +\u003d 1"},{"line_number":89,"context_line":"                LOG.warning(\"Failed to establish authenticated ssh\""},{"line_number":90,"context_line":"                            \" connection to %s@%s (%s). Number attempts: %s.\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F907A%3D","line":87,"in_reply_to":"AAAAUH%2F91L4%3D","updated":"2014-02-03 15:41:07.000000000","message":"I authored the original change which introduced the exp back-off (https://review.openstack.org/#/c/29285/). Starting at 1.5 s and having a backoff of 1.01 seemed to be a good compromise as it slightly reduced the number of checks without risking to increase the test time too much.\n\nThe proposed implementation goes like this (in terms of abs times): 1 3 6 10 15 21 28 36 45... \nIf we miss the 28s check it\u0027s an extra 8s. Running the tests a few times may tell whether that\u0027s affecting the gate run time or not.","commit_id":"20e46b6eb81978cd78f99b66be1baa5bc7b14812"}]}
