)]}'
{"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"959c10f954caa9e5bf6fce85a30033e98e80effe","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                                \u0027root\u0027)"},{"line_number":1260,"context_line":"            session.call_xenapi(\u0027VDI.add_to_other_config\u0027,"},{"line_number":1261,"context_line":"                                cache_vdi_ref, \u0027image-id\u0027, str(image_id))"},{"line_number":1262,"context_line":"            session.call_xenapi(\u0027VDI.add_to_other_config\u0027,"},{"line_number":1263,"context_line":"                                cache_vdi_ref, \u0027created\u0027,"},{"line_number":1264,"context_line":"                                str(timeutils.utcnow()))"},{"line_number":1265,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a8ffd7b_b5b488d1","line":1262,"updated":"2015-11-24 11:39:32.000000000","message":"Raw calls to add_to_other_config make me nervous as it is not thread safe.\nWe\u0027re synchronized on image_id, however updating an image based on a XAPI uuid.\nIt\u0027s possible that if two threads ask to download the same glance image, and the downloader is clever (e.g. sets the UUID for the root VDI to be the glance image_id?) then we might get a race here.\n\nI\u0027d rather see code that retrieves the other_config value, modifies it, and writes it back with a synchronize on the VDI uuid","commit_id":"f3e39b56459aee1aaa62fb01f00df7a93c2ef782"}]}
