)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"63f44a2ae50e249bbd43f75be6c29d556498dae1","unresolved":false,"context_lines":[{"line_number":4627,"context_line":"                                  volume_id, disk_bus, device_type):"},{"line_number":4628,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":4629,"context_line":"        def do_reserve():"},{"line_number":4630,"context_line":"            # destroy dummy bdm entry"},{"line_number":4631,"context_line":"            try:"},{"line_number":4632,"context_line":"                bdm \u003d objects.BlockDeviceMapping.get_by_volume_and_instance("},{"line_number":4633,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":4634,"context_line":"            except exception.VolumeBDMNotFound:"},{"line_number":4635,"context_line":"                bdm \u003d None"},{"line_number":4636,"context_line":"            if bdm and bdm.connection_info is None:"},{"line_number":4637,"context_line":"                LOG.info(_LI(\"Found dummy BDM record for instance %(instance)s\""},{"line_number":4638,"context_line":"                             \" with volume %(vol_id)s on %(mountpoint)s. \""},{"line_number":4639,"context_line":"                             \"Destroy it.\"),"},{"line_number":4640,"context_line":"                         {\u0027instance\u0027: instance.uuid,"},{"line_number":4641,"context_line":"                          \u0027vol_id\u0027: volume_id,"},{"line_number":4642,"context_line":"                          \u0027mountpoint\u0027: bdm.device_name})"},{"line_number":4643,"context_line":"                bdm.destroy()"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"            bdms \u003d ("},{"line_number":4646,"context_line":"                objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":2,"id":"fa7ab95a_b9dff067","line":4643,"range":{"start_line":4630,"start_character":12,"end_line":4643,"end_character":29},"updated":"2016-08-29 12:19:56.000000000","message":"This looks like a wrong place to process the rpc timeout error. You should process the rpc timeout error in the caller side. It should be at here https://github.com/openstack/nova/blob/master/nova/compute/api.py#L3215","commit_id":"b445c764f638482149e4e893577c2687be40150a"},{"author":{"_account_id":17527,"name":"Felix Ma","email":"maqi@cmss.chinamobile.com","username":"felix23ma"},"change_message_id":"936411e6c2526979004f1a7f1a896ebeec3a8fce","unresolved":false,"context_lines":[{"line_number":4627,"context_line":"                                  volume_id, disk_bus, device_type):"},{"line_number":4628,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":4629,"context_line":"        def do_reserve():"},{"line_number":4630,"context_line":"            # destroy dummy bdm entry"},{"line_number":4631,"context_line":"            try:"},{"line_number":4632,"context_line":"                bdm \u003d objects.BlockDeviceMapping.get_by_volume_and_instance("},{"line_number":4633,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":4634,"context_line":"            except exception.VolumeBDMNotFound:"},{"line_number":4635,"context_line":"                bdm \u003d None"},{"line_number":4636,"context_line":"            if bdm and bdm.connection_info is None:"},{"line_number":4637,"context_line":"                LOG.info(_LI(\"Found dummy BDM record for instance %(instance)s\""},{"line_number":4638,"context_line":"                             \" with volume %(vol_id)s on %(mountpoint)s. \""},{"line_number":4639,"context_line":"                             \"Destroy it.\"),"},{"line_number":4640,"context_line":"                         {\u0027instance\u0027: instance.uuid,"},{"line_number":4641,"context_line":"                          \u0027vol_id\u0027: volume_id,"},{"line_number":4642,"context_line":"                          \u0027mountpoint\u0027: bdm.device_name})"},{"line_number":4643,"context_line":"                bdm.destroy()"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"            bdms \u003d ("},{"line_number":4646,"context_line":"                objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_665ebfea","line":4643,"range":{"start_line":4630,"start_character":12,"end_line":4643,"end_character":29},"in_reply_to":"9a89bdaa_5cef03e8","updated":"2016-09-12 10:06:25.000000000","message":"The solutions in my view: 1. merge the reserve function into attach function in compute manager; 2. implement a full rpc method to clear dummy records. I prefer to the second one.  Alex. your view?","commit_id":"b445c764f638482149e4e893577c2687be40150a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"69bcc952304fca168be4d705a01408038b217bb3","unresolved":false,"context_lines":[{"line_number":4627,"context_line":"                                  volume_id, disk_bus, device_type):"},{"line_number":4628,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":4629,"context_line":"        def do_reserve():"},{"line_number":4630,"context_line":"            # destroy dummy bdm entry"},{"line_number":4631,"context_line":"            try:"},{"line_number":4632,"context_line":"                bdm \u003d objects.BlockDeviceMapping.get_by_volume_and_instance("},{"line_number":4633,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":4634,"context_line":"            except exception.VolumeBDMNotFound:"},{"line_number":4635,"context_line":"                bdm \u003d None"},{"line_number":4636,"context_line":"            if bdm and bdm.connection_info is None:"},{"line_number":4637,"context_line":"                LOG.info(_LI(\"Found dummy BDM record for instance %(instance)s\""},{"line_number":4638,"context_line":"                             \" with volume %(vol_id)s on %(mountpoint)s. \""},{"line_number":4639,"context_line":"                             \"Destroy it.\"),"},{"line_number":4640,"context_line":"                         {\u0027instance\u0027: instance.uuid,"},{"line_number":4641,"context_line":"                          \u0027vol_id\u0027: volume_id,"},{"line_number":4642,"context_line":"                          \u0027mountpoint\u0027: bdm.device_name})"},{"line_number":4643,"context_line":"                bdm.destroy()"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"            bdms \u003d ("},{"line_number":4646,"context_line":"                objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_5cef03e8","line":4643,"range":{"start_line":4630,"start_character":12,"end_line":4643,"end_character":29},"in_reply_to":"9a89bdaa_9337beaf","updated":"2016-09-05 12:48:07.000000000","message":"Sorry, I missed some points, look like just check at compute api side won\u0027t work too.\n\nBut with this fix, we still have problem. The dummy bdm is only cleaned  after attach same volume again. User may try \u0027nova show\u0027 after a failed volume attach, the nova api still return failed.","commit_id":"b445c764f638482149e4e893577c2687be40150a"},{"author":{"_account_id":17527,"name":"Felix Ma","email":"maqi@cmss.chinamobile.com","username":"felix23ma"},"change_message_id":"2632ed60e6bbcba837322ce5b67586e8170b6051","unresolved":false,"context_lines":[{"line_number":4627,"context_line":"                                  volume_id, disk_bus, device_type):"},{"line_number":4628,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":4629,"context_line":"        def do_reserve():"},{"line_number":4630,"context_line":"            # destroy dummy bdm entry"},{"line_number":4631,"context_line":"            try:"},{"line_number":4632,"context_line":"                bdm \u003d objects.BlockDeviceMapping.get_by_volume_and_instance("},{"line_number":4633,"context_line":"                    context, volume_id, instance.uuid)"},{"line_number":4634,"context_line":"            except exception.VolumeBDMNotFound:"},{"line_number":4635,"context_line":"                bdm \u003d None"},{"line_number":4636,"context_line":"            if bdm and bdm.connection_info is None:"},{"line_number":4637,"context_line":"                LOG.info(_LI(\"Found dummy BDM record for instance %(instance)s\""},{"line_number":4638,"context_line":"                             \" with volume %(vol_id)s on %(mountpoint)s. \""},{"line_number":4639,"context_line":"                             \"Destroy it.\"),"},{"line_number":4640,"context_line":"                         {\u0027instance\u0027: instance.uuid,"},{"line_number":4641,"context_line":"                          \u0027vol_id\u0027: volume_id,"},{"line_number":4642,"context_line":"                          \u0027mountpoint\u0027: bdm.device_name})"},{"line_number":4643,"context_line":"                bdm.destroy()"},{"line_number":4644,"context_line":""},{"line_number":4645,"context_line":"            bdms \u003d ("},{"line_number":4646,"context_line":"                objects.BlockDeviceMappingList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a89bdaa_9337beaf","line":4643,"range":{"start_line":4630,"start_character":12,"end_line":4643,"end_character":29},"in_reply_to":"fa7ab95a_b9dff067","updated":"2016-09-05 11:54:45.000000000","message":"Thanks, Alex. I had considered to modify the code here, but I need to implement a full rpc call in compute api and manager, in the  manager the same logic as what I\u0027ve done should be added.  Do you think it worth?","commit_id":"b445c764f638482149e4e893577c2687be40150a"}]}
