)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"78844318cdfe7c105234b207584510f258a18acf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch uses compare-and-swap to perform atomic DB changes to remove"},{"line_number":10,"context_line":"API races in attach and detach related methods."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Races are removes from the following methods:"},{"line_number":13,"context_line":"- attach"},{"line_number":14,"context_line":"- roll_detaching"},{"line_number":15,"context_line":"- begin_detaching"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"7a740942_18ffb135","line":12,"updated":"2015-12-09 21:54:24.000000000","message":"removes -\u003e removed","commit_id":"4c0badba29a30c8764007b24b19f71aeb8b8db44"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0249517a578328f96a60e240f782df8ce3199012","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch uses compare-and-swap to perform atomic DB changes to remove"},{"line_number":10,"context_line":"API races in attach and detach related methods."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Races are removes from the following methods:"},{"line_number":13,"context_line":"- attach"},{"line_number":14,"context_line":"- roll_detaching"},{"line_number":15,"context_line":"- begin_detaching"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3a7e1126_bc76d403","line":12,"range":{"start_line":12,"start_character":10,"end_line":12,"end_character":17},"updated":"2015-12-21 19:07:43.000000000","message":"s/removes/removed/\n\nIn case there\u0027s another update.","commit_id":"d411eb6b114e9dca446a742ccaa9ccfb533e191c"}],"cinder/db/api.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2d60614af7f0e9c1023129a1aa4b4358ac1b2a8f","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"def volume_admin_metadata_update(context, volume_id, metadata, delete,"},{"line_number":414,"context_line":"                                 add\u003dTrue, update\u003dTrue):"},{"line_number":415,"context_line":"    \"\"\"Update metadata if it exists, otherwise create it.\"\"\""},{"line_number":416,"context_line":"    return IMPL.volume_admin_metadata_update(context, volume_id, metadata,"},{"line_number":417,"context_line":"                                             delete, add, update)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a2fa921_3daf85e3","line":414,"updated":"2015-10-08 10:28:08.000000000","message":"Could we use a string arg to specify which method should use?\nLike \"method\u003d\u0027delete/add/update\u0027\". No need to add more args in future.","commit_id":"6349fb3a893e77df8e3789ba2847e333222939ff"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5a3ce29d313872f0f1340023bb48a8b711d5ddcd","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"def volume_admin_metadata_update(context, volume_id, metadata, delete,"},{"line_number":414,"context_line":"                                 add\u003dTrue, update\u003dTrue):"},{"line_number":415,"context_line":"    \"\"\"Update metadata if it exists, otherwise create it.\"\"\""},{"line_number":416,"context_line":"    return IMPL.volume_admin_metadata_update(context, volume_id, metadata,"},{"line_number":417,"context_line":"                                             delete, add, update)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a2ca52d_8ae4d70d","line":414,"in_reply_to":"7a2fa921_3daf85e3","updated":"2015-10-13 11:45:13.000000000","message":"If we add just 1 argument we will have to allow all possible convinations: allow nothing, only add, only update, add and update, plus all with delete as well.  I\u0027m not sure that will make it better.","commit_id":"6349fb3a893e77df8e3789ba2847e333222939ff"}],"cinder/volume/api.py":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"c8dc2692e068a0387af4674f49f6c078a72cefdd","unresolved":false,"context_lines":[{"line_number":651,"context_line":"                 resource\u003dvolume)"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"    @wrap_check_policy"},{"line_number":654,"context_line":"    def attach(self, context, volume, instance_uuid, host_name,"},{"line_number":655,"context_line":"               mountpoint, mode):"},{"line_number":656,"context_line":"        # We add readonly metadata if it doesn\u0027t already exist"},{"line_number":657,"context_line":"        readonly \u003d self.update_volume_admin_metadata(context.elevated(),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_30e1d92a","line":654,"updated":"2015-08-26 07:22:08.000000000","message":"I\u0027m a bit confused. Why isn\u0027t attach protected by db.conditional_update too, like the other operations?","commit_id":"ab00bef7e50574bf82494194f182f62025ae8555"}]}
