)]}'
{"glance/async_/flows/api_image_import.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0a7e078c3ae5db2ffa9a8f0f1eb1a7d05ef8bdd0","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        if self.backend is not None:"},{"line_number":468,"context_line":"            action.remove_importing_stores([self.backend])"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _status_callback(self, action, chunk_bytes, total_bytes):"},{"line_number":471,"context_line":"        LOG.debug(\u0027Image import %(image_id)s copied %(copied)i MiB\u0027,"},{"line_number":472,"context_line":"                  {\u0027image_id\u0027: action.image_id,"},{"line_number":473,"context_line":"                   \u0027copied\u0027: total_bytes // units.Mi})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ae3e8126","line":470,"range":{"start_line":470,"start_character":39,"end_line":470,"end_character":50},"updated":"2020-07-29 14:25:40.000000000","message":"unused?","commit_id":"5d9d726585e024c39e90d6bcc778ac1f42c5854a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"057510be3564ba38e53335fb627e5181a3e7028f","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        if self.backend is not None:"},{"line_number":468,"context_line":"            action.remove_importing_stores([self.backend])"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def _status_callback(self, action, chunk_bytes, total_bytes):"},{"line_number":471,"context_line":"        LOG.debug(\u0027Image import %(image_id)s copied %(copied)i MiB\u0027,"},{"line_number":472,"context_line":"                  {\u0027image_id\u0027: action.image_id,"},{"line_number":473,"context_line":"                   \u0027copied\u0027: total_bytes // units.Mi})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7450a60b","line":470,"range":{"start_line":470,"start_character":39,"end_line":470,"end_character":50},"in_reply_to":"9f560f44_ae3e8126","updated":"2020-07-29 15:06:10.000000000","message":"Yeah, I just want the signature of the function to be useful for more things without having to change it later. For example, something could check to see that we\u0027re doing zero-length reads, indicating that our pipeline has stalled or something.","commit_id":"5d9d726585e024c39e90d6bcc778ac1f42c5854a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"87006c67c2dc3b2ce9dd41c8fad24faaa45ff277","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        self.backend \u003d backend"},{"line_number":404,"context_line":"        self.all_stores_must_succeed \u003d all_stores_must_succeed"},{"line_number":405,"context_line":"        self.set_active \u003d set_active"},{"line_number":406,"context_line":"        self.last_status \u003d 0"},{"line_number":407,"context_line":"        super(_ImportToStore, self).__init__("},{"line_number":408,"context_line":"            name\u003d\u0027%s-ImportToStore-%s\u0027 % (task_type, task_id))"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_46d5491b","line":406,"range":{"start_line":406,"start_character":8,"end_line":406,"end_character":24},"updated":"2020-08-10 17:23:26.000000000","message":"Should we rename it as last_updated?","commit_id":"e49f23c04d784b5312d7df4556e2e5064555a84f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"6a3e6b92897e810db086803b1aeba85eb405f1ca","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        self.backend \u003d backend"},{"line_number":404,"context_line":"        self.all_stores_must_succeed \u003d all_stores_must_succeed"},{"line_number":405,"context_line":"        self.set_active \u003d set_active"},{"line_number":406,"context_line":"        self.last_status \u003d 0"},{"line_number":407,"context_line":"        super(_ImportToStore, self).__init__("},{"line_number":408,"context_line":"            name\u003d\u0027%s-ImportToStore-%s\u0027 % (task_type, task_id))"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_091b6272","line":406,"range":{"start_line":406,"start_character":8,"end_line":406,"end_character":24},"in_reply_to":"9f560f44_462d49fc","updated":"2020-08-10 17:54:51.000000000","message":"If new PS is required then,\nlast_status_logged_at","commit_id":"e49f23c04d784b5312d7df4556e2e5064555a84f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bd494371a388b2a587e6e8180e3d663ecee284d0","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        self.backend \u003d backend"},{"line_number":404,"context_line":"        self.all_stores_must_succeed \u003d all_stores_must_succeed"},{"line_number":405,"context_line":"        self.set_active \u003d set_active"},{"line_number":406,"context_line":"        self.last_status \u003d 0"},{"line_number":407,"context_line":"        super(_ImportToStore, self).__init__("},{"line_number":408,"context_line":"            name\u003d\u0027%s-ImportToStore-%s\u0027 % (task_type, task_id))"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_462d49fc","line":406,"range":{"start_line":406,"start_character":8,"end_line":406,"end_character":24},"in_reply_to":"9f560f44_46d5491b","updated":"2020-08-10 17:36:09.000000000","message":"This only gates the logging not the task update, so I think \"last updated\" is a misnomer. But maybe last_status_log or something?","commit_id":"e49f23c04d784b5312d7df4556e2e5064555a84f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e1f1490f1552622cb6547701d8760d94fe06d944","unresolved":false,"context_lines":[{"line_number":483,"context_line":"            action.remove_importing_stores([self.backend])"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"    def _status_callback(self, action, chunk_bytes, total_bytes):"},{"line_number":486,"context_line":"        # NOTE(danms): Only log status every five minutes"},{"line_number":487,"context_line":"        if timeutils.now() - self.last_status \u003e 300:"},{"line_number":488,"context_line":"            LOG.debug(\u0027Image import %(image_id)s copied %(copied)i MiB\u0027,"},{"line_number":489,"context_line":"                      {\u0027image_id\u0027: action.image_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f560f44_a92196b6","line":486,"updated":"2020-08-10 19:12:43.000000000","message":"++","commit_id":"e49f23c04d784b5312d7df4556e2e5064555a84f"}],"glance/common/scripts/image_import/main.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7ba7838e42bf81efdf10e2aa1cc69382f9d2209f","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        data_iter \u003d script_utils.get_image_data_iter(uri)"},{"line_number":148,"context_line":"        if callback:"},{"line_number":149,"context_line":"            # If a callback was provided, wrap our data iterator to call"},{"line_number":150,"context_line":"            # the function every 100MiB."},{"line_number":151,"context_line":"            data_iter \u003d script_utils.CallbackIterator("},{"line_number":152,"context_line":"                data_iter, callback, every_bytes\u003dunits.Mi * 100)"},{"line_number":153,"context_line":"        image.set_data(data_iter, backend\u003dbackend, set_active\u003dset_active)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_593b3fd0","line":150,"range":{"start_line":150,"start_character":33,"end_line":150,"end_character":39},"updated":"2020-07-27 22:12:18.000000000","message":"This is obviously too frequent for real situations, but apparently we don\u0027t know what the size of the image will be here, even though it should be in staging. If we did, I would propose we set this to 5% of the image size. If we have to choose something static, I\u0027d guess 1GiB, although even on a 10G link that will be fairly frequent, and be called a thousand times for a 1TiB image...","commit_id":"122d2866d037d1dfb5f5ef0456e9b17bed787929"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0dc22d6a6346bacc69ccc595a1a6cc7e1ba325ac","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            # If a callback was provided, wrap our data iterator to call"},{"line_number":149,"context_line":"            # the function every 60 seconds."},{"line_number":150,"context_line":"            data_iter \u003d script_utils.CallbackIterator("},{"line_number":151,"context_line":"                data_iter, callback, min_interval\u003d60)"},{"line_number":152,"context_line":"        image.set_data(data_iter, backend\u003dbackend, set_active\u003dset_active)"},{"line_number":153,"context_line":"    except Exception as e:"},{"line_number":154,"context_line":"        with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_0900d9aa","line":151,"range":{"start_line":151,"start_character":36,"end_line":151,"end_character":53},"updated":"2020-08-04 16:59:02.000000000","message":"Should we increase this min_interval to some bigger value say 3 mins or 5 mins?\n\nFor bigger size of images (say 2 hours of operation) it will log this message for around 120 times. I am saying this because earlier we faced lots of issues due to large amount of logs (subunit parser error).","commit_id":"7def80ddbc04054ee242629b383b3b6a7ced32f9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4d3ab5d2a703feec349a7b3cb8d534b84643db83","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            # If a callback was provided, wrap our data iterator to call"},{"line_number":149,"context_line":"            # the function every 60 seconds."},{"line_number":150,"context_line":"            data_iter \u003d script_utils.CallbackIterator("},{"line_number":151,"context_line":"                data_iter, callback, min_interval\u003d60)"},{"line_number":152,"context_line":"        image.set_data(data_iter, backend\u003dbackend, set_active\u003dset_active)"},{"line_number":153,"context_line":"    except Exception as e:"},{"line_number":154,"context_line":"        with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_a95d6d48","line":151,"range":{"start_line":151,"start_character":36,"end_line":151,"end_character":53},"in_reply_to":"9f560f44_0900d9aa","updated":"2020-08-04 17:32:39.000000000","message":"Changing this to less often increases the interval between the heartbeats, not just the logging. We could make the status logging less frequent independent of this. Note that the heartbeat function also does some data, so maybe we want this less frequent for that reason too, I\u0027m not sure.\n\nBut yeah, whatever you think on the interval. I think it probably needs to be at least 4x as often as the lock-busting timeout to make sure we\u0027ve had plenty of chances to update the task before the API is willing to bust it.","commit_id":"7def80ddbc04054ee242629b383b3b6a7ced32f9"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"43ce14f91f70d51eaa463e51850dda473fb9478a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            # If a callback was provided, wrap our data iterator to call"},{"line_number":149,"context_line":"            # the function every 60 seconds."},{"line_number":150,"context_line":"            data_iter \u003d script_utils.CallbackIterator("},{"line_number":151,"context_line":"                data_iter, callback, min_interval\u003d60)"},{"line_number":152,"context_line":"        image.set_data(data_iter, backend\u003dbackend, set_active\u003dset_active)"},{"line_number":153,"context_line":"    except Exception as e:"},{"line_number":154,"context_line":"        with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d6364851","line":151,"range":{"start_line":151,"start_character":36,"end_line":151,"end_character":53},"in_reply_to":"9f560f44_a95d6d48","updated":"2020-08-07 06:54:04.000000000","message":"Agree, If possible we should definitely make the status logging less frequent.","commit_id":"7def80ddbc04054ee242629b383b3b6a7ced32f9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5cf238c651c003f4a5519e591eec56729ea2cefd","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            # If a callback was provided, wrap our data iterator to call"},{"line_number":149,"context_line":"            # the function every 60 seconds."},{"line_number":150,"context_line":"            data_iter \u003d script_utils.CallbackIterator("},{"line_number":151,"context_line":"                data_iter, callback, min_interval\u003d60)"},{"line_number":152,"context_line":"        image.set_data(data_iter, backend\u003dbackend, set_active\u003dset_active)"},{"line_number":153,"context_line":"    except Exception as e:"},{"line_number":154,"context_line":"        with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f560f44_d9d4b44a","line":151,"range":{"start_line":151,"start_character":36,"end_line":151,"end_character":53},"in_reply_to":"9f560f44_d6364851","updated":"2020-08-07 13:35:45.000000000","message":"Okay, will do","commit_id":"7def80ddbc04054ee242629b383b3b6a7ced32f9"}]}
