'Update current traversal to stop workers from propagating.
Marks the stack as FAILED due to cancellation, but, allows all
in_progress resources to complete normally; no worker is stopped
abruptly.'

def stop_traversal(self, stack):

    _stop_traversal(stack)
    db_child_stacks = stack_objects.Stack.get_all_by_root_owner_id(stack.context, stack.id)
    for db_child in db_child_stacks:
        if (db_child.status == parser.Stack.IN_PROGRESS):
            child = parser.Stack.load(stack.context, stack_id=db_child.id, stack=db_child, load_template=False)
            _stop_traversal(child)
