-
Notifications
You must be signed in to change notification settings - Fork 16.3k
fix: strip trailing slash of base url in config (#44337) #53884
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -777,6 +777,7 @@ def validate(self): | |
| ) | ||
|
|
||
| self._upgrade_postgres_metastore_conn() | ||
| self._strip_trailing_slash_from_base_url() | ||
| self.is_validated = True | ||
|
|
||
| def _upgrade_postgres_metastore_conn(self): | ||
|
|
@@ -808,6 +809,19 @@ def _upgrade_postgres_metastore_conn(self): | |
| old_env_var = self._env_var_name("core", key) | ||
| os.environ.pop(old_env_var, None) | ||
|
|
||
| def _strip_trailing_slash_from_base_url(self): | ||
| """Validate that api base_url config does not end with `/`.""" | ||
| key = "base_url" | ||
| base_url = self.get("api", key, fallback="") | ||
| if base_url and base_url.endswith("/"): | ||
| self.upgraded_values[("api", key)] = base_url | ||
| new_base_url = base_url.rstrip("/") | ||
| self._update_env_var(section="api", name=key, new_value=new_base_url) | ||
| # if the old value is set via env var, we need to wipe it | ||
| # otherwise, it'll "win" over our adjusted value | ||
| old_env_var = self._env_var_name("core", key) | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why the core section? If the api section one is set that will always be used in preference to the core one.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah I didin't know this. Saw this code in another config modifying code and thought I need this. I'll remove this then 👍🏻 |
||
| os.environ.pop(old_env_var, None) | ||
|
|
||
| def _validate_enums(self): | ||
| """Validate that enum type config has an accepted value.""" | ||
| for (section_key, option_key), enum_options in self.enums_options.items(): | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do we want to strip it. Don't most places now need to ensure that it always exists? #54831 for example, and there were one or two more
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this is why I created this originally. So I checked several places and the only reference checking if it ends with / was in the api_server. So all the other places, like the property log_url of taskinstance model, just assume the base url is without a trailing slash. My reasoning then was ok lets just make this assumption hold true and not have this ugly
if not base_url.endswith("/")check all over the places.Edit: I am also fine with just closing this PR and using the other one, I just see this as source for error again.