[Kimchi-devel] [PATCH][Kimchi] Avoid race condition in vm lookup

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Fri Apr 22 13:12:50 UTC 2016


Reviewed-by: Paulo Ricardo Paz Vital <pvital at linux.vnet.ibm.com>

On Apr 21 02:00AM, Rodrigo Trujillo wrote:
> In guest lookup, libvirt domain is instanciated and then a info()
> function is called, but it is possible that the guest be removed between
> these two operations, raising an exception that is not treated.
> This patch fix this issue, catching the exception, logging and returning
> the correct error to the request.
> 
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
>  model/vms.py | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/model/vms.py b/model/vms.py
> index 4f5d442..780e578 100644
> --- a/model/vms.py
> +++ b/model/vms.py
> @@ -1272,7 +1272,15 @@ class VMModel(object):
> 
>      def lookup(self, name):
>          dom = self.get_vm(name, self.conn)
> -        info = dom.info()
> +        try:
> +            # Avoid race condition, where guests may be deleted before below
> +            # command.
> +            info = dom.info()
> +        except libvirt.libvirtError as e:
> +            wok_log.error('Operation error while retrieving virtual machine '
> +                          '"%s" information: %s', name, e.message)
> +            raise OperationFailed('KCHVM0009E', {'name': name,
> +                                                 'err': e.message})
>          state = DOM_STATE_MAP[info[0]]
>          screenshot = None
>          # (type, listen, port, passwd, passwdValidTo)
> -- 
> 2.1.0
> 
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
> 

-- 
Paulo Ricardo Paz Vital
Linux Technology Center, IBM Systems
http://www.ibm.com/linux/ltc/




More information about the Kimchi-devel mailing list