diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-03-12 18:50:17 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-03-12 18:50:17 +0000 |
commit | f0fc1240090938ae9d945bb91bfeda4e5d42ac9c (patch) | |
tree | 28fdb200ea5448b3325200b2a7db14dc94c497d7 | |
parent | 1c0d29ccccaa59aa253a7eb752f54d184addd17e (diff) | |
parent | f398b9e195cda582bad57396b097dec274384c07 (diff) | |
download | nova-f0fc1240090938ae9d945bb91bfeda4e5d42ac9c.tar.gz nova-f0fc1240090938ae9d945bb91bfeda4e5d42ac9c.tar.xz nova-f0fc1240090938ae9d945bb91bfeda4e5d42ac9c.zip |
Merge "Force resource updates to update updated_at"
-rw-r--r-- | nova/db/sqlalchemy/api.py | 5 | ||||
-rw-r--r-- | nova/tests/test_db_api.py | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index f35f23e56..c98cb716e 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -530,6 +530,11 @@ def compute_node_update(context, compute_id, values, prune_stats=False): with session.begin(): _update_stats(context, stats, compute_id, session, prune_stats) compute_ref = _compute_node_get(context, compute_id, session=session) + # Always update this, even if there's going to be no other + # changes in data. This ensures that we invalidate the + # scheduler cache of compute node data in case of races. + if 'updated_at' not in values: + values['updated_at'] = timeutils.utcnow() convert_datetimes(values, 'created_at', 'deleted_at', 'updated_at') compute_ref.update(values) return compute_ref diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index 2b81f66f7..1653e942c 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -1497,6 +1497,12 @@ class CapacityTestCase(test.TestCase): self.assertEqual(2, int(stats['num_proj_12345'])) self.assertEqual(1, int(stats['num_tribbles'])) + def test_compute_node_update_always_updates_updated_at(self): + item = self._create_helper('host1') + item_updated = db.compute_node_update(self.ctxt, + item['id'], {}) + self.assertNotEqual(item['updated_at'], item_updated['updated_at']) + def test_compute_node_stat_prune(self): item = self._create_helper('host1') for stat in item['stats']: |