Remotable objects doesn't treat expected errors as ClientExceptions

Bug #1228134 reported by Hans Lindgren
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
New
Undecided
Unassigned

Bug Description

From exceptions like the one below one can see that objects executing at the remote side fail to treat expected exceptions as ClientExceptions, which might result in them not being captured and handled correctly on the caller side.

[-] Error during ComputeManager._sync_power_states: Instance 56378542-4862-4bbf-953a-8e103546331e could not be found.
Traceback (most recent call last):

  File "/opt/stack/new/nova/nova/openstack/common/rpc/amqp.py", line 461, in _process_data
    **args)

  File "/opt/stack/new/nova/nova/openstack/common/rpc/dispatcher.py", line 172, in dispatch
    result = getattr(proxyobj, method)(ctxt, **kwargs)

  File "/opt/stack/new/nova/nova/conductor/manager.py", line 567, in object_action
    result = getattr(objinst, objmethod)(context, *args, **kwargs)

  File "/opt/stack/new/nova/nova/objects/base.py", line 143, in wrapper
    return fn(self, ctxt, *args, **kwargs)

  File "/opt/stack/new/nova/nova/objects/instance.py", line 477, in refresh
    expected_attrs=extra)

  File "/opt/stack/new/nova/nova/objects/base.py", line 106, in wrapper
    result = fn(cls, context, *args, **kwargs)

  File "/opt/stack/new/nova/nova/objects/instance.py", line 309, in get_by_uuid
    columns_to_join=columns_to_join)

  File "/opt/stack/new/nova/nova/db/api.py", line 604, in instance_get_by_uuid
    return IMPL.instance_get_by_uuid(context, uuid, columns_to_join)

  File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 126, in wrapper
    return f(*args, **kwargs)

  File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 1678, in instance_get_by_uuid
    columns_to_join=columns_to_join)

  File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 1688, in _instance_get_by_uuid
    raise exception.InstanceNotFound(instance_id=uuid)

InstanceNotFound: Instance 56378542-4862-4bbf-953a-8e103546331e could not be found.
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task Traceback (most recent call last):
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/periodic_task.py", line 180, in run_periodic_tasks
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task task(self, context)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/compute/manager.py", line 4640, in _sync_power_states
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task vm_power_state)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/compute/manager.py", line 4651, in _sync_instance_power_state
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task db_instance.refresh()
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/objects/base.py", line 136, in wrapper
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task ctxt, self, fn.__name__, args, kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/conductor/rpcapi.py", line 497, in object_action
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task objmethod=objmethod, args=args, kwargs=kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/rpcclient.py", line 85, in call
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return self._invoke(self.proxy.call, ctxt, method, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/rpcclient.py", line 63, in _invoke
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return cast_or_call(ctxt, msg, **self.kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/proxy.py", line 126, in call
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task result = rpc.call(context, real_topic, msg, timeout)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/__init__.py", line 139, in call
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return _get_impl().call(CONF, context, topic, msg, timeout)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/impl_kombu.py", line 816, in call
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task rpc_amqp.get_connection_pool(conf, Connection))
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/amqp.py", line 574, in call
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task rv = list(rv)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/amqp.py", line 539, in __iter__
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task raise result
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task InstanceNotFound_Remote: Instance 56378542-4862-4bbf-953a-8e103546331e could not be found.
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task Traceback (most recent call last):
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/amqp.py", line 461, in _process_data
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task **args)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/openstack/common/rpc/dispatcher.py", line 172, in dispatch
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task result = getattr(proxyobj, method)(ctxt, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/conductor/manager.py", line 567, in object_action
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task result = getattr(objinst, objmethod)(context, *args, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/objects/base.py", line 143, in wrapper
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return fn(self, ctxt, *args, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/objects/instance.py", line 477, in refresh
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task expected_attrs=extra)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/objects/base.py", line 106, in wrapper
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task result = fn(cls, context, *args, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/objects/instance.py", line 309, in get_by_uuid
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task columns_to_join=columns_to_join)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/db/api.py", line 604, in instance_get_by_uuid
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return IMPL.instance_get_by_uuid(context, uuid, columns_to_join)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 126, in wrapper
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task return f(*args, **kwargs)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 1678, in instance_get_by_uuid
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task columns_to_join=columns_to_join)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 1688, in _instance_get_by_uuid
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task raise exception.InstanceNotFound(instance_id=uuid)
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task InstanceNotFound: Instance 56378542-4862-4bbf-953a-8e103546331e could not be found.
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task
2013-09-20 12:28:22.621 23558 TRACE nova.openstack.common.periodic_task

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.