← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1655979] [NEW] NUMATopologyFilter modifies the provided RequestSpec

 

Public bug reported:

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/

** Affects: nova
     Importance: Undecided
     Assignee: Stephen Finucane (stephenfinucane)
         Status: In Progress

-- 
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):
  In Progress

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


Follow ups