Initial execution of parallel engines can be racey

Bug #1598947 reported by Dave Walker
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
watcher
New
Undecided
Unassigned

Bug Description

When running multiple watcher engines in parallel (ie, via automated HA deployment), the initial run can create multiple duplicate Goals and Strategies.

For example:
+--------------------------------------+----------------------+----------------------+
| UUID | Name | Display name |
+--------------------------------------+----------------------+----------------------+
| 55211ddd-e9a5-4105-b8e8-c177c0de59fa | server_consolidation | Server consolidation |
| b084a6c7-e03e-4ef6-ba72-10e493ba2b6e | dummy | Dummy goal |
| 2ff77cc0-0f20-4fd7-a739-4346a044a961 | thermal_optimization | Thermal optimization |
| 542de4f0-73c7-461d-b4e3-b8dbe808e0d6 | thermal_optimization | Thermal optimization |
| f78952c5-294b-4f33-9fb7-7b2f4d7494a8 | unclassified | Unclassified |
| 6beb2ff1-fffb-488b-a7db-92615761fe13 | unclassified | Unclassified |
| 45a9d181-0641-451e-97b5-0f705fd9c16f | workload_balancing | Workload balancing |
| aa619ddd-7265-4857-a57e-e3776b668a5c | workload_balancing | Workload balancing |
+--------------------------------------+----------------------+----------------------+

This has bad consequences, such as:
2016-07-04 17:22:41.053 1 CRITICAL python-watcher [req-b99b79f4-2b24-4dab-a1be-c0c90713b726 - - - - -] MultipleResultsFound: Multiple rows were found for one()
2016-07-04 17:22:41.053 1 ERROR python-watcher Traceback (most recent call last):
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/bin/watcher-decision-engine", line 10, in <module>
2016-07-04 17:22:41.053 1 ERROR python-watcher sys.exit(main())
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/cmd/decisionengine.py", line 43, in main
2016-07-04 17:22:41.053 1 ERROR python-watcher syncer.sync()
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/decision_engine/sync.py", line 119, in sync
2016-07-04 17:22:41.053 1 ERROR python-watcher self.strategy_mapping.update(self._sync_strategy(strategy_map))
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/decision_engine/sync.py", line 167, in _sync_strategy
2016-07-04 17:22:41.053 1 ERROR python-watcher strategy.goal_id = objects.Goal.get_by_name(self.ctx, goal_name).id
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/objects/goal.py", line 116, in get_by_name
2016-07-04 17:22:41.053 1 ERROR python-watcher db_goal = cls.dbapi.get_goal_by_name(context, name)
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/db/sqlalchemy/api.py", line 432, in get_goal_by_name
2016-07-04 17:22:41.053 1 ERROR python-watcher return self._get_goal(context, fieldname="name", value=goal_name)
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/db/sqlalchemy/api.py", line 421, in _get_goal
2016-07-04 17:22:41.053 1 ERROR python-watcher fieldname=fieldname, value=value)
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/watcher/db/sqlalchemy/api.py", line 243, in _get
2016-07-04 17:22:41.053 1 ERROR python-watcher obj = query.one()
2016-07-04 17:22:41.053 1 ERROR python-watcher File "/var/lib/kolla/venv/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2727, in one
2016-07-04 17:22:41.053 1 ERROR python-watcher "Multiple rows were found for one()")
2016-07-04 17:22:41.053 1 ERROR python-watcher MultipleResultsFound: Multiple rows were found for one()
2016-07-04 17:22:41.053 1 ERROR python-watcher

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.