Public bug reported:

For some reason I need to add a RPC interface to nova-compute. When I
tested the new interface, I got this error:

2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server 
[req-ff6e2750-98a2-4c13-95d0-548d9f66101d 3ff71b27e1e9446c8972c423e1b0d81e 
123a456966664881a8380faa009e752f - default default] Exception during message 
handling: AttributeError: 'SchedulerReportClient' object has no attribute 
'obj_to_primitive'
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server Traceback (most 
recent call last):
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/server.py", line 163, in 
_process_incoming
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     res = 
self.dispatcher.dispatch(message)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 268, 
in dispatch
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self._do_dispatch(endpoint, method, ctxt, args)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 195, 
in _do_dispatch
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self.serializer.serialize_entity(ctxt, result)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/rpc.py", line 130, in 
serialize_entity
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self._base.serialize_entity(context, entity)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 237, in 
serialize_entity
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     entity)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 223, in 
_process_iterable
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     for k, v in 
values.items()})
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 223, in 
<dictcomp>
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     for k, v in 
values.items()})
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 240, in 
serialize_entity
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     entity = 
entity.obj_to_primitive()
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/scheduler/client/__init__.py", 
line 39, in __run_method
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
getattr(self.instance, __name)(*args, **kwargs)
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server AttributeError: 
'SchedulerReportClient' object has no attribute 'obj_to_primitive'
2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server 


The function`serialize_entity` in nova/nova/objects/base.py is:

    def serialize_entity(self, context, entity):
        if isinstance(entity, (tuple, list, set, dict)):
            entity = self._process_iterable(context, self.serialize_entity,
                                            entity)
        elif (hasattr(entity, 'obj_to_primitive') and
              callable(entity.obj_to_primitive)):
            entity = entity.obj_to_primitive()
        return entity


(hasattr(entity, 'obj_to_primitive') and callable(entity.obj_to_primitive) are 
always return true because entity is a LazyLoader class and it implemented 
`__getattr__`.

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1790444

Title:
  Nova crashes when added new RPC interface

Status in OpenStack Compute (nova):
  New

Bug description:
  For some reason I need to add a RPC interface to nova-compute. When I
  tested the new interface, I got this error:

  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server 
[req-ff6e2750-98a2-4c13-95d0-548d9f66101d 3ff71b27e1e9446c8972c423e1b0d81e 
123a456966664881a8380faa009e752f - default default] Exception during message 
handling: AttributeError: 'SchedulerReportClient' object has no attribute 
'obj_to_primitive'
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server Traceback (most 
recent call last):
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/server.py", line 163, in 
_process_incoming
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     res = 
self.dispatcher.dispatch(message)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 268, 
in dispatch
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self._do_dispatch(endpoint, method, ctxt, args)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 195, 
in _do_dispatch
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self.serializer.serialize_entity(ctxt, result)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/rpc.py", line 130, in 
serialize_entity
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
self._base.serialize_entity(context, entity)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 237, in 
serialize_entity
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     entity)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 223, in 
_process_iterable
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     for k, v in 
values.items()})
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 223, in 
<dictcomp>
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     for k, v in 
values.items()})
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/objects/base.py", line 240, in 
serialize_entity
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     entity = 
entity.obj_to_primitive()
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server   File 
"/openstack/lib/python2.7/site-packages/nova/scheduler/client/__init__.py", 
line 39, in __run_method
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server     return 
getattr(self.instance, __name)(*args, **kwargs)
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server AttributeError: 
'SchedulerReportClient' object has no attribute 'obj_to_primitive'
  2018-09-03 02:23:56.870 70765 ERROR oslo_messaging.rpc.server 

  
  The function`serialize_entity` in nova/nova/objects/base.py is:

      def serialize_entity(self, context, entity):
          if isinstance(entity, (tuple, list, set, dict)):
              entity = self._process_iterable(context, self.serialize_entity,
                                              entity)
          elif (hasattr(entity, 'obj_to_primitive') and
                callable(entity.obj_to_primitive)):
              entity = entity.obj_to_primitive()
          return entity

  
  (hasattr(entity, 'obj_to_primitive') and callable(entity.obj_to_primitive) 
are always return true because entity is a LazyLoader class and it implemented 
`__getattr__`.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1790444/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to