)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a02d8dffe96721c706de92c879f948676f441f86","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2018-02-22 14:26:33 -0500"},{"line_number":4,"context_line":"Commit:     Chaynika Saikia \u003ccsaikia@asu.edu\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-02-22 15:26:48 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"If a large volume is backed up or a lot of concurrent backups happen,"},{"line_number":8,"context_line":"the cinder-backup service goes offline since a lot of these operations"},{"line_number":9,"context_line":"are CPU intensive and hence some of the threads may be starved."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa0c359_873d70c5","line":6,"updated":"2018-02-22 20:29:08.000000000","message":"Please update this commit message to have a summary line.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"a79fece882dd9f33a0cc66eec6c85042a555494c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If a large volume is backed up or a lot of concurrent backups happen,"},{"line_number":10,"context_line":"the cinder-backup service goes offline since a lot of these operations"},{"line_number":11,"context_line":"are CPU intensive and hence some of the threads may be starved."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When many concurrent backup create/restore operations happen, then"},{"line_number":14,"context_line":"if all of them are greenthreads, and since, many operations are CPU"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa0c359_ba42f63c","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":17},"updated":"2018-02-23 10:21:50.000000000","message":"-1: The problem here is not that they are CPU intensive, but that they are C code that cannot be monkey patched by eventlet, and therefore will have no thread context switch on network I/O operations, so they will block all other greenthreads until the call to the C library completes.","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"}],"cinder/backup/drivers/ceph.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        \"\"\""},{"line_number":398,"context_line":"        LOG.debug(\"Creating base image \u0027%s\u0027\", name)"},{"line_number":399,"context_line":"        old_format, features \u003d self._get_rbd_support()"},{"line_number":400,"context_line":"        self.rbd.RBD().create(ioctx\u003drados_client.ioctx,"},{"line_number":401,"context_line":"                              name\u003dname,"},{"line_number":402,"context_line":"                              size\u003dsize,"},{"line_number":403,"context_line":"                              old_format\u003dold_format,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_5ad7324c","line":400,"updated":"2018-02-23 10:21:50.000000000","message":"What about here?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                      \"backup base image of volume %(volume)s.\","},{"line_number":467,"context_line":"                      {\u0027basename\u0027: base_name, \u0027volume\u0027: volume_id})"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        with rbd_driver.RADOSClient(self, backup.container) as client:"},{"line_number":470,"context_line":"            rbd_exists, base_name \u003d \\"},{"line_number":471,"context_line":"                self._rbd_image_exists(base_name, volume_id, client,"},{"line_number":472,"context_line":"                                       try_diff_format\u003dtry_diff_format)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_7ae46e3c","line":469,"updated":"2018-02-23 10:21:50.000000000","message":"What about here?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":643,"context_line":"        updates \u003d {}"},{"line_number":644,"context_line":"        base_name \u003d self._get_backup_base_name(volume_id, diff_format\u003dTrue)"},{"line_number":645,"context_line":"        image_created \u003d False"},{"line_number":646,"context_line":"        with rbd_driver.RADOSClient(self, backup.container) as client:"},{"line_number":647,"context_line":"            # If from_snap does not exist at the destination (and the"},{"line_number":648,"context_line":"            # destination exists), this implies a previous backup has failed."},{"line_number":649,"context_line":"            # In this case we will force a full backup."}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_5aee5222","line":646,"updated":"2018-02-23 10:21:50.000000000","message":"What about here?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":650,"context_line":"            #"},{"line_number":651,"context_line":"            # TODO(dosaboy): find a way to repair the broken backup"},{"line_number":652,"context_line":"            #"},{"line_number":653,"context_line":"            if base_name not in self.rbd.RBD().list(ioctx\u003dclient.ioctx):"},{"line_number":654,"context_line":"                src_vol_snapshots \u003d self.get_backup_snaps(source_rbd_image)"},{"line_number":655,"context_line":"                if src_vol_snapshots:"},{"line_number":656,"context_line":"                    # If there are source volume snapshots but base does not"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_1af44af0","line":653,"updated":"2018-02-23 10:21:50.000000000","message":"What about here?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"        base has no snapshots/restore points), None is returned. Otherwise, the"},{"line_number":1056,"context_line":"        restore point associated with backup_id is returned."},{"line_number":1057,"context_line":"        \"\"\""},{"line_number":1058,"context_line":"        with rbd_driver.RADOSClient(self, self._ceph_backup_pool) as client:"},{"line_number":1059,"context_line":"            base_rbd \u003d self.rbd.Image(client.ioctx, base_name, read_only\u003dTrue)"},{"line_number":1060,"context_line":"            try:"},{"line_number":1061,"context_line":"                restore_point \u003d self._get_backup_snap_name(base_rbd, base_name,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_1a71aaa8","line":1058,"updated":"2018-02-23 10:21:50.000000000","message":"What about this call?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":1076,"context_line":"            if exists:"},{"line_number":1077,"context_line":"                extents.append(length)"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"        rbd_volume.diff_iterate(0, rbd_volume.size(), None, iter_cb)"},{"line_number":1080,"context_line":""},{"line_number":1081,"context_line":"        if extents:"},{"line_number":1082,"context_line":"            LOG.debug(\"RBD has %s extents\", sum(extents))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_3a9d86bb","line":1079,"updated":"2018-02-23 10:21:50.000000000","message":"And this one?","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"}],"cinder/tests/unit/backup/drivers/test_backup_ceph.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"a02d8dffe96721c706de92c879f948676f441f86","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from oslo_utils import units"},{"line_number":29,"context_line":"import six"},{"line_number":30,"context_line":"from six.moves import range"},{"line_number":31,"context_line":"import threading"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from cinder.backup import driver"},{"line_number":34,"context_line":"from cinder.backup.drivers import ceph"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_074f206b","line":31,"updated":"2018-02-22 20:29:08.000000000","message":"This needs to move up to the standard library import group.","commit_id":"a79fece882dd9f33a0cc66eec6c85042a555494c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b8061dae0ee781ecd97d4695cbf38e4acf4798bb","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":"import threading"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import ddt"},{"line_number":24,"context_line":"import mock"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_da0fc22b","line":21,"updated":"2018-02-23 10:21:50.000000000","message":"-1: This should go after L19, thus the PEP8 error","commit_id":"0a68ec44feb56610fbe6721595948deaf1037850"}]}
