summaryrefslogtreecommitdiffstats
path: root/nova/utils.py
diff options
context:
space:
mode:
authorPeter Feiner <peter@gridcentric.ca>2013-06-19 21:14:43 +0000
committerPeter Feiner <peter@gridcentric.ca>2013-06-26 14:28:46 +0000
commit0ed62fb7affbda4a701c2175e95aa6f92038604c (patch)
treeb8bef608c50c5b0e6c134902cd41ef02bac46c74 /nova/utils.py
parent7696c3c11f0de855cbc53cc04ee7d2be07ae3b9c (diff)
downloadnova-0ed62fb7affbda4a701c2175e95aa6f92038604c.tar.gz
nova-0ed62fb7affbda4a701c2175e95aa6f92038604c.tar.xz
nova-0ed62fb7affbda4a701c2175e95aa6f92038604c.zip
db.compute_node_update: ignore values['update_at']
When individual instances are updated (e.g., during spawn and terminate), ResourceTracker (in nova.compute.resource_tracker) calls compute_node_update with values=self.compute_node. Since self.compute_node is an instance of ComputeNode that was retrieved from the database, it has updated_at set. Since updated_at is in values, sqlalchemy doesn't automatically change the record's updated_at column (see nova.openstack.common.db.sqlalchemy.models.TimestampMixin). Moreover, since updated_at is set to the last value's updated_at, updated_at effectively doesn't change until values without updated_at are sent, which only happens during the periodic task that calls ResourceTracker.update_available_resources. Nova-scheduler relies on ComputeNode.updated_at to keep its model of available resources up-to-date. In particular, nova-scheduler doesn't play a role in instance termination, so it doesn't account for freed resources until ComputeNode.updated_at changes. Thus, between nova-compute's periodic calls to ResourceTracker.update_available_resources, nova-scheduler's model of available resources monotonically decreases. If, for example, a node has resources for 10 instances, and you manage to boot 10, terminate 10, then attempt to boot another before the end of the period, nova-scheduler won't schedule the new instance on the vacant node. Fixes bug #1194900. Note that f398b9e195cda582bad57396b097dec274384c07 fixed a separate issue (bug #1153778) related to ComputeNode.update_at being stale. Change-Id: Ifd1e56edfd811241816970715071876857de80d3
Diffstat (limited to 'nova/utils.py')
0 files changed, 0 insertions, 0 deletions