)]}'
{"tripleo_common/image/image_uploader.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"fc0e3796c1f906cfb6b0c136bc9948d691d3d589","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        for image in images:"},{"line_number":336,"context_line":"            discover_args.append((image, tag_from_label,"},{"line_number":337,"context_line":"                                  self.insecure_registries))"},{"line_number":338,"context_line":"        p \u003d multiprocessing.Pool(16)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        versioned_images \u003d {}"},{"line_number":341,"context_line":"        for image, versioned_image in p.map(discover_tag_from_inspect,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_11c46090","line":338,"updated":"2018-01-31 00:55:02.000000000","message":"I should mention for now there is no need to change this concurrency, these workers just make REST calls to registries so there is not the same dockerd CPU usage involved","commit_id":"22d2f699bdcf3233af3555a3e7399441ab26632a"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"85c6192bf93d80bec49d0ab29d41b8a726318fb6","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        local_images.extend(result)"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        # workers will be half the CPU count, to a minimum of 2"},{"line_number":388,"context_line":"        workers \u003d max(2, processutils.get_worker_count() / 2)"},{"line_number":389,"context_line":"        p \u003d multiprocessing.Pool(workers)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        for result in p.map(docker_upload, self.upload_tasks):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_ba18e11d","line":388,"updated":"2018-01-31 03:50:37.000000000","message":"whoops, should be //","commit_id":"22d2f699bdcf3233af3555a3e7399441ab26632a"},{"author":{"_account_id":10873,"name":"Juan Antonio Osorio Robles","email":"jaosorior@redhat.com","username":"ejuaoso"},"change_message_id":"5a7b834097c7be6d01ebe9454503d9f5dffad9f5","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                time.sleep(3)"},{"line_number":211,"context_line":"                LOG.warning(\u0027retrying pulling image: %s\u0027 % image)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @staticmethod"},{"line_number":214,"context_line":"    def _push(dockerc, image, tag\u003dNone):"},{"line_number":215,"context_line":"        LOG.debug(\u0027Pushing %s\u0027 % image)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        for line in dockerc.push(image, tag\u003dtag, stream\u003dTrue):"},{"line_number":218,"context_line":"            status \u003d json.loads(line)"},{"line_number":219,"context_line":"            if \u0027error\u0027 in status:"},{"line_number":220,"context_line":"                LOG.warning(\u0027docker push failed: %s\u0027 % status[\u0027error\u0027])"},{"line_number":221,"context_line":"                return 1"},{"line_number":222,"context_line":"            LOG.debug(status.get(\u0027status\u0027))"},{"line_number":223,"context_line":"        return 0"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @staticmethod"},{"line_number":226,"context_line":"    def _push_retry(dockerc, image, tag\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_6b5cc9ec","line":223,"range":{"start_line":213,"start_character":0,"end_line":223,"end_character":16},"updated":"2018-01-31 06:53:46.000000000","message":"why not use the retry package? https://julien.danjou.info/blog/2015/python-retrying\n\nThis would avoid creating the _push_retry function, and you could use exponential backoff.","commit_id":"e2dac0ef415c51792f1f779c05a9c439ae5f5265"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"1eb2c336a5aaae65c21853045d953113d9e693c0","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                time.sleep(3)"},{"line_number":211,"context_line":"                LOG.warning(\u0027retrying pulling image: %s\u0027 % image)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @staticmethod"},{"line_number":214,"context_line":"    def _push(dockerc, image, tag\u003dNone):"},{"line_number":215,"context_line":"        LOG.debug(\u0027Pushing %s\u0027 % image)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        for line in dockerc.push(image, tag\u003dtag, stream\u003dTrue):"},{"line_number":218,"context_line":"            status \u003d json.loads(line)"},{"line_number":219,"context_line":"            if \u0027error\u0027 in status:"},{"line_number":220,"context_line":"                LOG.warning(\u0027docker push failed: %s\u0027 % status[\u0027error\u0027])"},{"line_number":221,"context_line":"                return 1"},{"line_number":222,"context_line":"            LOG.debug(status.get(\u0027status\u0027))"},{"line_number":223,"context_line":"        return 0"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @staticmethod"},{"line_number":226,"context_line":"    def _push_retry(dockerc, image, tag\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_ebf77958","line":223,"range":{"start_line":213,"start_character":0,"end_line":223,"end_character":16},"in_reply_to":"5f93b717_6b5cc9ec","updated":"2018-01-31 07:15:35.000000000","message":"That would be my preference too, but the original _pull_retry didn\u0027t, which is what I based this _pull_retry on.\n\nWe can always switch to python-retrying for both later.","commit_id":"e2dac0ef415c51792f1f779c05a9c439ae5f5265"}]}
