[Kimchi-devel] [PATCH][Wok] Return collection list without resource with lookup problems
Paulo Ricardo Paz Vital
pvital at linux.vnet.ibm.com
Fri Apr 22 13:08:31 UTC 2016
Reviewed-by: Paulo Ricardo Paz Vital <pvital at linux.vnet.ibm.com>
On Apr 21 01:59AM, Rodrigo Trujillo wrote:
> When a collection receives a GET request, it is going to fetch all
> resources names, in a list, and perform a lookup for each resource,
> building the return list with all data.
> There is a potencial race condition problem in this approach. If a
> given resource is removed between list of names creation and its
> lookup call, wok is going to fail and the exception is not treated.
> This patch fix this problem catching the exception, logging the problem
> and completing the GET request. So, the resource with problem is
> discarted and other resources are returned.
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
> src/wok/control/base.py | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/src/wok/control/base.py b/src/wok/control/base.py
> index 7aeb844..f314d18 100644
> --- a/src/wok/control/base.py
> +++ b/src/wok/control/base.py
> @@ -34,7 +34,7 @@ from wok.exception import InvalidOperation, InvalidParameter
> from wok.exception import MissingParameter, NotFoundError
> from wok.exception import OperationFailed, UnauthorizedError, WokException
> from wok.reqlogger import RequestRecord
> -from wok.utils import get_plugin_from_request, utf8_dict
> +from wok.utils import get_plugin_from_request, utf8_dict, wok_log
>
>
> # Default request log messages
> @@ -364,7 +364,14 @@ class Collection(object):
> # internal text, get_list changes ident to unicode for sorted
> args = self.resource_args + [ident]
> res = self.resource(self.model, *args)
> - res.lookup()
> + try:
> + res.lookup()
> + except Exception as e:
> + # In case of errors when fetching a resource info, pass and
> + # log the error, so, other resources are returned
> + wok_log.error("Problem in lookup of resource '%s'. "
> + "Detail: %s" % (ident, e.message))
> + continue
> res_list.append(res)
> return res_list
> except AttributeError:
> --
> 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