← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1804453] [NEW] maximum recursion possible while setting aggregates in placement

 

Public bug reported:

It's possible for the _ensure_aggregate code in
objects/resource_provider.py to, under unusual circumstances, reach a
maximum recursion error, because it calls itself when there is a
DBDuplicateEntry error.

http://logs.openstack.org/84/602484/30/check/placement-
perfload/8a8642e/controller/logs/screen-placement-
api.txt.gz#_Nov_21_13_05_03_661629

http://logs.openstack.org/84/602484/30/check/placement-
perfload/8a8642e/controller/logs/screen-placement-
api.txt.gz#_Nov_21_13_05_03_654874

" ERROR placement.fault_wrap [None req-5fc62d1e-a1bd-47e3-a61e-
45e01281fed3 None None] Placement API unexpected error: maximum
recursion depth exceeded while getting the str of an object:
RuntimeError: maximum recursion depth exceeded while getting the str of
an object"

The "getting the str" part appears to be a coincidence based on reaching
a bad stack depth at that particular moment.

This happened while the placeload script was doing its thing of adding
aggregates to to 1000 resource providers using asyncio, so concurrency
is high and weird. See https://review.openstack.org/#/c/602484/ for the
code that caused this.

It is unlikely that this is going to happen in the real world, but it is
the sort of thing it would be nice to be more robust about, perhaps by
counting attempts and bailing out?

** Affects: nova
     Importance: Undecided
         Status: New


** Tags: placement

-- 
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/1804453

Title:
  maximum recursion possible while setting aggregates in placement

Status in OpenStack Compute (nova):
  New

Bug description:
  It's possible for the _ensure_aggregate code in
  objects/resource_provider.py to, under unusual circumstances, reach a
  maximum recursion error, because it calls itself when there is a
  DBDuplicateEntry error.

  http://logs.openstack.org/84/602484/30/check/placement-
  perfload/8a8642e/controller/logs/screen-placement-
  api.txt.gz#_Nov_21_13_05_03_661629

  http://logs.openstack.org/84/602484/30/check/placement-
  perfload/8a8642e/controller/logs/screen-placement-
  api.txt.gz#_Nov_21_13_05_03_654874

  " ERROR placement.fault_wrap [None req-5fc62d1e-a1bd-47e3-a61e-
  45e01281fed3 None None] Placement API unexpected error: maximum
  recursion depth exceeded while getting the str of an object:
  RuntimeError: maximum recursion depth exceeded while getting the str
  of an object"

  The "getting the str" part appears to be a coincidence based on
  reaching a bad stack depth at that particular moment.

  This happened while the placeload script was doing its thing of adding
  aggregates to to 1000 resource providers using asyncio, so concurrency
  is high and weird. See https://review.openstack.org/#/c/602484/ for
  the code that caused this.

  It is unlikely that this is going to happen in the real world, but it
  is the sort of thing it would be nice to be more robust about, perhaps
  by counting attempts and bailing out?

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1804453/+subscriptions


Follow ups