Dispatcher failed to handle the event: 'NoneType' object has no attribute 'status_reason'
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
senlin |
New
|
Undecided
|
Unassigned |
Bug Description
When use command `senlin node-recover node-5707ae7a-002` we will get problem 1666245:
https:/
And when we solve problem 1666245. We will get following problem:
2017-02-21 16:13:15.584 ERROR senlin.engine.event [req-d1a5947b-
2017-02-21 16:13:15.584 TRACE senlin.engine.event Traceback (most recent call last):
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/opt/stack/
2017-02-21 16:13:15.584 TRACE senlin.engine.event phase=phase, reason=reason, timestamp=
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/usr/local/
2017-02-21 16:13:15.584 TRACE senlin.engine.event method_name, *args, **kwds)
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/usr/local/
2017-02-21 16:13:15.584 TRACE senlin.engine.event self._invoke_
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/usr/local/
2017-02-21 16:13:15.584 TRACE senlin.engine.event response_
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/usr/local/
2017-02-21 16:13:15.584 TRACE senlin.engine.event return getattr(
2017-02-21 16:13:15.584 TRACE senlin.engine.event File "/opt/stack/
2017-02-21 16:13:15.584 TRACE senlin.engine.event reason = kwargs.
2017-02-21 16:13:15.584 TRACE senlin.engine.event AttributeError: 'NoneType' object has no attribute 'status_reason'
2017-02-21 16:13:15.584 TRACE senlin.engine.event
Traceback (most recent call last):
File "/usr/local/
timer()
File "/usr/local/
cb(*args, **kw)
File "/usr/local/
result = function(*args, **kwargs)
File "/opt/stack/
return func(*args, **kwargs)
File "/opt/stack/
EVENT.
File "/opt/stack/
LOG.info(FMT, _event_data(action, phase, reason))
File "/opt/stack/
return dict(name=
AttributeError: 'NoneType' object has no attribute 'name'
2017-02-21 16:13:15.587 DEBUG oslo_messaging.
2017-02-21 16:13:15.610 DEBUG oslo_messaging.
2017-02-21 16:13:16.043 ERROR senlin.engine.event [req-884eebc4-
-> status = kwargs.get('phase') or entity.status get('reason' ) or entity. status_ reason entity( entity) get('timestamp' ) or timeutils. utcnow( True) local/lib/ python2. 7/dist- packages/ eventlet/ greenthread. py(214) main() stack/senlin/ senlin/ engine/ scheduler. py(77)_ start_with_ trace() stack/senlin/ senlin/ engine/ actions/ base.py( 470)ActionProc( ) stack/senlin/ senlin/ engine/ event.py( 95)info( ) stack/senlin/ senlin/ engine/ event.py( 73)_dump( ) timestamp) local/lib/ python2. 7/dist- packages/ stevedore/ extension. py(259) map_method( ) local/lib/ python2. 7/dist- packages/ stevedore/ extension. py(232) map() one_plugin( response. append, func, e, args, kwds) local/lib/ python2. 7/dist- packages/ stevedore/ extension. py(263) _invoke_ one_plugin( ) callback( func(e, *args, **kwds)) local/lib/ python2. 7/dist- packages/ stevedore/ extension. py(237) _call_extension _method( ) extension. obj, method_name)(*args, **kwds) senlin/ senlin/ events/ database. py(37)dump( ) engine. actions. cluster_ action. ClusterAction object at 0x7fbde66f3850> 3ec7-4733- 8344-e690979808 95', 'id': '75d01266- 35bd-46a0- b2cf-1d83e539ba c6', 'data': {}, 'cause': u'RPC Request', 'status': u'RUNNING', 'inputs': {}, 'context': <senlin. common. context. RequestContext object at 0x7fbde6b087d0>, 'outputs': {}, 'start_time': 1487743104.0, 'user': u'3c4d64baadcd4 37d8dd49054899e 73dd', 'status_reason': u'The action is being processed.', 'target': 'fe35b2b7- 1e90-4c17- 8fcf-4ef1890f2e bd', 'name': u'cluster_ check_fe35b2b7' , 'created_at': datetime. datetime( 2017, 2, 22, 5, 58, 31, tzinfo=<UTC>), 'interval': -1, 'project': u'cf7a6ae28dde4 f46aa8fe55d318a 608f', 'end_time': None, 'timeout': 3600, 'action': u'CLUSTER_CHECK'}
(Pdb) l
32 ctx = action.context
33 entity = action.entity
34 if entity is None:
35 import pdb
36 pdb.set_trace()
37 -> status = kwargs.get('phase') or entity.status
38 reason = kwargs.
39 otype = cls._check_
40 cluster_id = entity.id if otype == 'CLUSTER' else entity.cluster_id
41 # use provided timestamp if any
42 timestamp = kwargs.
(Pdb) bt
/usr/
-> result = function(*args, **kwargs)
/opt/
-> return func(*args, **kwargs)
/opt/
-> EVENT.info(action, consts.PHASE_START)
/opt/
-> _dump(logging.INFO, action, phase, reason, timestamp)
/opt/
-> phase=phase, reason=reason, timestamp=
/usr/
-> method_name, *args, **kwds)
/usr/
-> self._invoke_
/usr/
-> response_
/usr/
-> return getattr(
> /opt/stack/
-> status = kwargs.get('phase') or entity.status
(Pdb) p action
<senlin.
(Pdb) p action.entity
None
(Pdb) p action.__dict__
{'domain': None, 'updated_at': None, 'entity': None, 'owner': '0d2e9936-
(Pdb)