As of change I6827137f35c0cb4f9fc4c6f753d9a035326ed01b in
Ocata, the ResourceTracker manages multiple compute nodes
via its "compute_nodes" variable, but the "stats" variable
was still being shared across all nodes, which leads to
leaking stats across nodes in an ironic deployment where
a single nova-compute service host is managing multiple
ironic instances (nodes).
This change makes ResourceTracker.stats node-specific
which fixes the ironic leak but also allows us to remove
the stats deepcopy while iterating over instances which
should improve performance for single-node deployments with
potentially a large number of instances, i.e. vCenter.
Conflicts:
nova/compute/manager.py
NOTE(mriedem): The conflict was due to not having change
Iae904afb6cb4fcea8bb27741d774ffbe986a5fb4 in Pike.
NOTE(mriedem): The check for node is None was moved from
_do_build_and_run_instance to build_and_run_instance because
the functional tests are using the ChanceScheduler since we
don't have change I12de2e195022593ea2a3e2894f2c3b5226930d4f
and the ChanceScheduler does not return the nodename during
select_destinations so the compute has to get it from the
driver.
Change-Id: I0b9e5b711878fa47ba90e43c0b41437b57cf8ef6
Closes-Bug: #1784705
Closes-Bug: #1777422
(cherry picked from commit b5b7d86bb0)
(cherry picked from commit 7d99f5753f)