Skip to content
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

fix(zbchaos): retry SaaS detection and panic if it fails instead of falling back to Self-Managed mode #490

Closed
wants to merge 4 commits into from

Conversation

lenaschoenburg
Copy link
Member

I have added a dependency on a generic exponential backoff library because I didn't feel like writing this on my own. If querying for the CR still fails after retries are exhausted, we panic instead of just falling back to Self-Managed mode. I think this is preferable over retrying forever.

Closes #488

@lenaschoenburg
Copy link
Member Author

Unfortunately this breaks test that depend on the fallback behavior. For example Test_CreateK8ClientWithPath which creates a client that tries to connect to https://127.0.0.1:46807. When building the client, we test if it's SaaS or SM. Since the URL is not reachable we can't query the CR and thus can't determine if it's SaaS or not.

Seems to me that we can't fix #488 without breaking a lot of tests 😅

LogInfo("Failed to retrieve SaaS CRD, fallback to self-managed mode. %v", err)
return false
LogError("Failed to check for SaaS CRD, can't proceed without knowing if this is SaaS or Self-Managed: %v", err)
panic(err)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not panic here :) If you want we can take a look at it together tomorrow.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But then what? We don't know if it's SaaS or not

Copy link
Member

@ChrisKujawa ChrisKujawa Feb 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My point I wanted to make is the following:

I don't want to have the panics in the internal package, you can see it as the lib or backend. It would be same as a library in java just does exit(1), it is unexpected and not nice. For me, it would be ok if you have this in the commands (it is the actual user of the libs, the user-facing code, the last layer).

I would like to see us to return an error and handle this by the consumer of the method.

I think we have here three cases to distinguish: a) CRD exists - SaaS b) CRD not exist - SM c) error -> return error. If currently not existing also causes an error (we have to find out/check this I guess, then we need to somehow need to distinguish these error cases.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay that part makes sense to me but I'm not sure how to handle the errors. We check for SaaS when building the k8sclient so very early on for every request. What can we do if that fails?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Detection of SaaS vs SM environment incorrectly fallback to SM
2 participants