)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"8f6db4664c2d69407c923f521caaf5474c05bbb6","unresolved":false,"context_lines":[{"line_number":15,"context_line":"the same decorator call and the possibility to use the new Cinder"},{"line_number":16,"context_line":"Versioned Objects lock methods."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This is part of a PoC for HA A-A"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I7ed3097ff25e01c3a91c5552c45cde7a1ca7f9b7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a4dcd0f_f17b9026","line":18,"updated":"2015-08-05 14:07:14.000000000","message":"Would you like to add link to your blog so that people understand better what you meant?","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"}],"cinder/coordination.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"8f6db4664c2d69407c923f521caaf5474c05bbb6","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    locks.append(lock(name, external, semaphores, coordinator))"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"            # Acquire all objects simultaneously"},{"line_number":282,"context_line":"            with contextlib.nested(*locks):"},{"line_number":283,"context_line":"                return f(*a, **k)"},{"line_number":284,"context_line":"        return wrapped"},{"line_number":285,"context_line":"    return wrap"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_b1ed08b9","line":282,"updated":"2015-08-05 14:07:14.000000000","message":"Cool use of contextlib.nested, but python 2.7 explicitly deprecated it: https://docs.python.org/2/library/contextlib.html","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"8f6db4664c2d69407c923f521caaf5474c05bbb6","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    acquired_locks \u003d []"},{"line_number":290,"context_line":"    for l in locks:"},{"line_number":291,"context_line":"        try:"},{"line_number":292,"context_line":"            assert l.acquire(**acquire_options), \u0027acquired returned false\u0027"},{"line_number":293,"context_line":"            acquired_locks.append(l)"},{"line_number":294,"context_line":"        except Exception as ex:"},{"line_number":295,"context_line":"            LOG.error(_LE(\u0027Acquiring lock %(lock)s: %(ex)\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_d104544b","line":292,"updated":"2015-08-05 14:07:14.000000000","message":"It is an assert but also wrapped in exception catch?","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"39387ce167c4573c6b31fde1d97f52e063874497","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            assert l.acquire(**acquire_options), \u0027acquired returned false\u0027"},{"line_number":293,"context_line":"            acquired_locks.append(l)"},{"line_number":294,"context_line":"        except Exception as ex:"},{"line_number":295,"context_line":"            LOG.error(_LE(\u0027Acquiring lock %(lock)s: %(ex)\u0027),"},{"line_number":296,"context_line":"                      {\u0027lock\u0027: l, \u0027ex\u0027: ex})"},{"line_number":297,"context_line":"            release_locks(acquired_locks)"},{"line_number":298,"context_line":"            raise ex"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_746a0ef0","line":295,"updated":"2015-08-05 14:20:49.000000000","message":"Add \u0027.\u0027 in the end","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"39387ce167c4573c6b31fde1d97f52e063874497","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        try:"},{"line_number":304,"context_line":"            l.release()"},{"line_number":305,"context_line":"        except Exception as ex:"},{"line_number":306,"context_line":"            LOG.error(_LE(\u0027Releaseing lock %(lock)s: %(ex)\u0027),"},{"line_number":307,"context_line":"                      {\u0027lock\u0027: l, \u0027ex\u0027: ex})"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_94a8fa21","line":306,"updated":"2015-08-05 14:20:49.000000000","message":"Add \u0027.\u0027 in the end","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"}],"cinder/objects/base.py":[{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"39387ce167c4573c6b31fde1d97f52e063874497","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    @property"},{"line_number":74,"context_line":"    def lock_name(self):"},{"line_number":75,"context_line":"        if \u0027id\u0027 not in self.fields:"},{"line_number":76,"context_line":"            raise NotImplementedError(_(\u0027VersionedObject is missing the id\u0027))"},{"line_number":77,"context_line":"        return self.obj_name() + \u0027-\u0027 + self.id"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def get_lock(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_5497d2eb","line":76,"updated":"2015-08-05 14:20:49.000000000","message":"Add \u0027.\u0027 in the end","commit_id":"c50ef8af1f9865080f5a5f89b9077d3e9ad41986"}]}
