)]}'
{"tripleo_common/image/image_uploader.py":[{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"a5d68487cd0663eb0dce35f530058f47b939abba","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"    uploader_lock_info \u003d set()"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    @classmethod"},{"line_number":1125,"context_line":"    @tenacity.retry(  # Retry until we no longer have collisions"},{"line_number":1126,"context_line":"        retry\u003dtenacity.retry_if_exception_type(ImageUploaderThreadException),"},{"line_number":1127,"context_line":"        wait\u003dtenacity.wait_random_exponential(multiplier\u003d1, max\u003d10)"},{"line_number":1128,"context_line":"    )"},{"line_number":1129,"context_line":"    def _layer_fetch_lock(cls, layer):"},{"line_number":1130,"context_line":"        if layer in cls.uploader_lock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_8ff7ef59","line":1127,"range":{"start_line":1125,"start_character":0,"end_line":1127,"end_character":67},"updated":"2019-10-10 09:31:57.000000000","message":"I think this no longer matches its sense after that change.\nWe should either chage wait to the fixed interval and add stop\u003dtenacity.stop_never OR reraise it after the limit has been reached to the caller process to react on that situation as appropriate","commit_id":"98f2d962f955fd57085f6c2a9fcc3882f9eaae38"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"70eecdb34a31cf3e7465e0c47aa29ef6a844e125","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"    uploader_lock_info \u003d set()"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    @classmethod"},{"line_number":1125,"context_line":"    @tenacity.retry(  # Retry until we no longer have collisions"},{"line_number":1126,"context_line":"        retry\u003dtenacity.retry_if_exception_type(ImageUploaderThreadException),"},{"line_number":1127,"context_line":"        wait\u003dtenacity.wait_random_exponential(multiplier\u003d1, max\u003d10)"},{"line_number":1128,"context_line":"    )"},{"line_number":1129,"context_line":"    def _layer_fetch_lock(cls, layer):"},{"line_number":1130,"context_line":"        if layer in cls.uploader_lock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_cf0ba727","line":1127,"range":{"start_line":1125,"start_character":0,"end_line":1127,"end_character":67},"in_reply_to":"3fa7e38b_8ff7ef59","updated":"2019-10-10 09:46:53.000000000","message":"Addressed in https://review.opendev.org/#/c/687288/9..10/tripleo_common/image/image_uploader.py","commit_id":"98f2d962f955fd57085f6c2a9fcc3882f9eaae38"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"c7800576318828a1da402079de1067f5f8868372","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"    uploader_lock_info \u003d set()"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    @classmethod"},{"line_number":1125,"context_line":"    @tenacity.retry(  # Retry until we no longer have collisions"},{"line_number":1126,"context_line":"        retry\u003dtenacity.retry_if_exception_type(ImageUploaderThreadException),"},{"line_number":1127,"context_line":"        wait\u003dtenacity.wait_random_exponential(multiplier\u003d1, max\u003d10)"},{"line_number":1128,"context_line":"    )"},{"line_number":1129,"context_line":"    def _layer_fetch_lock(cls, layer):"},{"line_number":1130,"context_line":"        if layer in cls.uploader_lock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f0951b88","line":1127,"range":{"start_line":1125,"start_character":0,"end_line":1127,"end_character":67},"in_reply_to":"3fa7e38b_8ff7ef59","updated":"2019-10-10 14:14:41.000000000","message":"This is the equivalent of what was there (while true sleep) but it improved it by actually adding an exponential back off.  We actually don\u0027t want to to reraise because this code is to stop a process to wait until the duplicated layer has been fetched completely. Essentially this should mean that when this passes (eventually), the code will detect the layer is already available and just do the needful.","commit_id":"98f2d962f955fd57085f6c2a9fcc3882f9eaae38"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"fd990ad2e3e3d751b13575b65e067737b7cf21fa","unresolved":false,"context_lines":[{"line_number":1122,"context_line":"    uploader_lock_info \u003d set()"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    @classmethod"},{"line_number":1125,"context_line":"    @tenacity.retry(  # Retry until we no longer have collisions"},{"line_number":1126,"context_line":"        retry\u003dtenacity.retry_if_exception_type(ImageUploaderThreadException),"},{"line_number":1127,"context_line":"        wait\u003dtenacity.wait_random_exponential(multiplier\u003d1, max\u003d10)"},{"line_number":1128,"context_line":"    )"},{"line_number":1129,"context_line":"    def _layer_fetch_lock(cls, layer):"},{"line_number":1130,"context_line":"        if layer in cls.uploader_lock_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_71bd8200","line":1127,"range":{"start_line":1125,"start_character":0,"end_line":1127,"end_character":67},"in_reply_to":"3fa7e38b_f0951b88","updated":"2019-10-14 14:56:27.000000000","message":"\u003e This is the equivalent of what was there (while true sleep) but it\n\nnot exactly.\nThe original code will never hit while do \"limits\", and will be sleeping until the exit condition has been reached.\n\nWith that change, we break the exit condition as now tenacity will stop retrying it after some limits, so we must use\nstop\u003dtenacity.stop_never plus a fixed wait time then (still)\n\n \u003e improved it by actually adding an exponential back off.  We\n \u003e actually don\u0027t want to to reraise because this code is to stop a\n \u003e process to wait until the duplicated layer has been fetched\n \u003e completely. Essentially this should mean that when this passes\n \u003e (eventually), the code will detect the layer is already available\n \u003e and just do the needful.","commit_id":"98f2d962f955fd57085f6c2a9fcc3882f9eaae38"}]}
