yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #60791
[Bug 1655979] Re: NUMATopologyFilter modifies the provided RequestSpec
Reviewed: https://review.openstack.org/419479
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=bff2030ecea8a1d21e03c61a7ece02f40dc25c5d
Submitter: Jenkins
Branch: master
commit bff2030ecea8a1d21e03c61a7ece02f40dc25c5d
Author: Stephen Finucane <sfinucan@xxxxxxxxxx>
Date: Thu Jan 12 13:59:32 2017 +0000
scheduler: Don't modify RequestSpec.numa_topology
The 'NUMATopologyFilter' makes a call to 'numa_fit_instance_to_host' in
order to determine whether an instance with a sample topology could fit
on a given host. This function is provided with an InstanceNUMATopology
object, which was extracted from the RequestSpec provided to the filter.
However, the 'numa_fit_instance_to_host' call has the side effect of
modifying a couple of fields on this InstanceNUMATopology object, most
notably the pinning information, and these changes are then propagated
to subsequent calls of the filter. The reason for this propagation is
presumably Python's "call-by-object" model [1].
While this doesn't cause any issues currently, it is a latent bug that
has caused issues downstream. Resolve the issue by copying the entire
RequestSpec object, thus ensuring any changes to this or the contained
NUMA topology are not stored and cannot affect future calls to this or
other filters.
[1] https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/
Change-Id: If26cbdd5189c53891554c8d128be9b90578616aa
Closes-Bug: #1655979
** Changed in: nova
Status: In Progress => Fix Released
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1655979
Title:
NUMATopologyFilter modifies the provided RequestSpec
Status in OpenStack Compute (nova):
Fix Released
Bug description:
The 'NUMATopologyFilter' makes a call to 'numa_fit_instance_to_host'
in order to determine whether an instance with a sample topology could
fit on a given host. This function is provided with an
InstanceNUMATopology object, which was extracted from the RequestSpec
provided to the filter. However, the 'numa_fit_instance_to_host' call
has the side effect of modifying a couple of fields on this
InstanceNUMATopology object, notably the pinning information, which
appears to be propagated to subsequent calls of the filter. The reason
for this propagation is presumably Python's "call-by-object" model
[1].
We should ensure the original RequestSpec is not modified, thus
preventing possible issues in the future.
[1] https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-
callbyreference-neither/
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1655979/+subscriptions
References