with operation is None, node do_recover will fail

Bug #1666245 reported by XueFeng Liu
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
senlin
Fix Released
Undecided
XueFeng Liu

Bug Description

Run command `senlin node-recover node-5707ae7a-002` or do_recover from health manager.
We will get following error.

2017-02-20 22:19:31.464 INFO senlin.engine.event [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] node-5707ae7a-001 [59327285] NODE_RECOVER - start: None
2017-02-20 22:19:31.506 INFO senlin.engine.event [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] node-5707ae7a-002 [bbecde70] NODE_RECOVER - start: None
2017-02-20 22:19:32.116 ERROR senlin.engine.actions.base [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] Unexpected exception occurred during action NODE_RECOVER (bbb53ad9-b475-4841-8b87-7925ad3cfdc9) execution: 'NoneType' object has no attribute '__getitem__'
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base Traceback (most recent call last):
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/base.py", line 476, in ActionProc
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base result, reason = action.execute()
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 270, in execute
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base res, reason = self._execute()
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 236, in _execute
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base return method()
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 154, in wrapper
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base return f(*args, **kwargs)
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 203, in do_recover
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base res = self.entity.do_recover(self.context, **self.inputs)
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/node.py", line 352, in do_recover
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base physical_id = pb.Profile.recover_object(context, self, **options)
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 154, in wrapper
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base return f(*args, **kwargs)
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/profiles/base.py", line 268, in recover_object
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base return profile.do_recover(obj, **options)
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/profiles/os/nova/server.py", line 1098, in do_recover
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base op_name = operation['name']
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-20 22:19:32.116 TRACE senlin.engine.actions.base
2017-02-20 22:19:32.149 ERROR senlin.engine.actions.base [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] Unexpected exception occurred during action NODE_RECOVER (e3b64e5a-a221-4b76-9b21-3d732a82d37c) execution: 'NoneType' object has no attribute '__getitem__'
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base Traceback (most recent call last):
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/base.py", line 476, in ActionProc
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base result, reason = action.execute()
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 270, in execute
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base res, reason = self._execute()
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 236, in _execute
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base return method()
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 154, in wrapper
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base return f(*args, **kwargs)
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/actions/node_action.py", line 203, in do_recover
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base res = self.entity.do_recover(self.context, **self.inputs)
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/engine/node.py", line 352, in do_recover
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base physical_id = pb.Profile.recover_object(context, self, **options)
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/usr/local/lib/python2.7/dist-packages/osprofiler/profiler.py", line 154, in wrapper
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base return f(*args, **kwargs)
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/profiles/base.py", line 268, in recover_object
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base return profile.do_recover(obj, **options)
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base File "/opt/stack/senlin/senlin/profiles/os/nova/server.py", line 1098, in do_recover
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base op_name = operation['name']
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base TypeError: 'NoneType' object has no attribute '__getitem__'
2017-02-20 22:19:32.149 TRACE senlin.engine.actions.base
2017-02-20 22:19:32.249 ERROR senlin.engine.event [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] node-5707ae7a-002 [bbecde70] NODE_RECOVER - error: 'NoneType' object has no attribute '__getitem__'
2017-02-20 22:19:32.282 ERROR senlin.engine.event [req-b434fcd3-5c21-4c8f-bda5-13dda6a9ec31 None None] node-5707ae7a-001 [59327285] NODE_RECOVER - error: 'NoneType' object has no attribute '__getitem__'

Changed in senlin:
assignee: nobody → XueFeng Liu (jonnary-liu)
status: New → In Progress
description: updated
summary: - after cluster check find not active nodes, it recovers fail
+ node do_recover will fail with operation is None
description: updated
summary: - node do_recover will fail with operation is None
+ with operation is None, node do_recover will fail
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to senlin (master)

Fix proposed to branch: master
Review: https://review.openstack.org/436888

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to senlin (master)

Reviewed: https://review.openstack.org/436888
Committed: https://git.openstack.org/cgit/openstack/senlin/commit/?id=05eb8daaff530b5f3659d3ce40e52c5c69a86c3f
Submitter: Jenkins
Branch: master

commit 05eb8daaff530b5f3659d3ce40e52c5c69a86c3f
Author: jonnary <email address hidden>
Date: Wed Feb 22 17:56:25 2017 +0800

    Fix do_recover problem when operation is None

    This patch fixes do_recover problem when operation is None.

    Change-Id: Ia19d96a1ee55303ec0be7533a4e2c1558067c155
    Closes-Bug: #1666245

Changed in senlin:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/senlin 4.0.0.0b1

This issue was fixed in the openstack/senlin 4.0.0.0b1 development milestone.

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.