Infinitely recursing stacks reach python's maximum recursion depth

Bug #1214239 reported by Clint Byrum
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
Medium
Clint Byrum

Bug Description

Steps to reproduce:

* Create a template like this:

Resources:
  C0:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: http://someplace/you/control/template.yaml

* Put this template in the URL above so that heat-engine can access it.
* Create a stack with this template

It will recursively download and try to deploy until this is printed in heat-engine's log:

2013-08-20 04:38:01.570 13720 TRACE heat.engine.resource RuntimeError: maximum recursion depth exceeded while calling a Python object

The stack will be 'stuck' in the CREATE/IN PROGRESS state, and can be deleted.

summary: - Ifinitely recursing stacks reach python's maximum recursion depth
+ Infinitely recursing stacks reach python's maximum recursion depth
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

Fix proposed to branch: master
Review: https://review.openstack.org/43044

Changed in heat:
assignee: nobody → Clint Byrum (clint-fewbar)
status: Triaged → In Progress
Revision history for this message
Steven Hardy (shardy) wrote :

lifeless raised a bug on this topic a while back, but I can't find it atm, IIRC maybe it expired incomplete as it didn't provide any method to reproduce.

Changed in heat:
milestone: none → havana-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

Reviewed: https://review.openstack.org/43044
Committed: http://github.com/openstack/heat/commit/b1b31f170b2256cb73b330341b143f1299e424dd
Submitter: Jenkins
Branch: master

commit b1b31f170b2256cb73b330341b143f1299e424dd
Author: Clint Byrum <email address hidden>
Date: Tue Aug 27 09:10:54 2013 -0700

    Provide user control for maximum nesting depth

    In the case of an infinitely recursing stack, Heat will continue to
    keep nesting stacks until python's maximum stack recursion depth
    is reached. By this point a lot of memory and time may have been
    spent parsing/loading/etc.

    The default of 3 is enough to deploy a stack of stacks of stacks. It
    can be raised by deployers if there is a desire to do larger and more
    complicated stacks, at the cost of more resource utilization.

    Fixes bug #1214239

    Change-Id: Ic492ef84b94b1f715c49eef7e1794a486fb8182f

Changed in heat:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in heat:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in heat:
milestone: havana-3 → 2013.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.