-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recursion issues as of 1.1.0 / ansible 2.10.2 #4202
Comments
Operator SDK |
Sure, 1.0.1 does ship with Ansible 2.9. And I had no issue. Though I just pulled the last 1.1.0, and I confirm that it does ship with 2.10.
|
Out of curiosity, I track the meaning of For reproducibility purposes, shouldn't all the versions, including |
For the reference, I have stated my question about version pinning in #4237. |
Using Ansible 2.10 was a mistake, and I will be pinning to 2.9 in the fix for #4237. Adding this as a release blocker since we should have been using 2.9. |
Getting the requirements to be install via requirements.txt turned out to be more complex than I originally realized. I'm pinning the top level deps by hand, fixing this issue. #4321 |
Fixed by #4321 |
Bug Report
What did you do?
Changed my base image from 1.0.1, to 1.1.0.
What did you expect to see?
Nothing special, similar results to 1.0.1 I guess.
What did you see instead? Under which circumstances?
Playbooks crashing.
In practice. My operator deploys stuff, that could have dependencies on other components we might have deployed with another CR.
At some point, I would detect those components, and may start waiting for them (can be a build that need to complete, a service that needs to startup, sample below for a PipelineRun):
Entering the
wait-for.yaml
:So .... that code's been working pretty well, until upgrading my operator base image to 1.1.0
Since then, I would see an error such as
maximum recursion depth exceeded while calling a Python object
.For a given CR, that trace would always mention the same line: at some point, it stops reading the conditions, while in the middle of them (eg: trace would mention condD deploying a CR A, condN for CR B, ...)
Obviously, a quick workaround to try and avoid these would be to rewrite the until close, such as:
This way, some of my playbooks would eventually manage to reach their end.
Then again, as soon as I'ld have to wait for an object to become ready, I'm still very likely to overflow my python stack.
How come?
This used to work great.
Any chance it would get fixed?
Looking at Ansible issues, they would have heard of this ( ansible/ansible#71920 ). AFAIU, 2.10.2 should be fixed. Though if that were the case, I obviously wouldn't be here.
Environment
Operator type:
/language ansible
Kubernetes cluster type:
vanilla
$ operator-sdk version
1.1.0
$ kubectl version
1.18.3
Possible Solution
Not a fix / temporary workaround: rewriting playbook conditions, refactoring them into a one-liner
The text was updated successfully, but these errors were encountered: