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

Fixed side effect of menu filtering causing disappearing menus #39229

Merged
merged 1 commit into from
Apr 24, 2024

Conversation

potiuk
Copy link
Member

@potiuk potiuk commented Apr 24, 2024

The default implementation of filter_permitted_menu_items had a subtle side-effect. The filtering on child items was done in-place and modified the menu itself, so it was enough to get the same worker serve requests for multiple users for the same menu to get the items removed for subsequent user - even if they had permission to see it.

Deepcopying the menu items before filtering them should fix the problem

Fixes: #39204
Fixes: #39135


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk potiuk added this to the Airflow 2.9.1 milestone Apr 24, 2024
@potiuk potiuk force-pushed the fix-menu-filtering-side-effects branch from 8466054 to bd87761 Compare April 24, 2024 13:29
@vincbeck
Copy link
Contributor

💣 THANK YOU! And sorry for the bug :)

The default implementation of filter_permitted_menu_items had a
subtle side-effect. The filtering on child items was done in-place
and modified the menu itself, so it was enough to get the same
worker serve requests for multiple users for the same menu to get
the items removed for subsequent user - even if they had permission
to see it.

Deepcopying the menu items before filtering them should fix the problem

Fixes: apache#39204
Fixes: apache#39135
@potiuk potiuk force-pushed the fix-menu-filtering-side-effects branch from bd87761 to c6a289b Compare April 24, 2024 16:04
@potiuk
Copy link
Member Author

potiuk commented Apr 24, 2024

I had to make it a bit more complex, because of infnite recursion

@potiuk potiuk merged commit 0d2c0c5 into apache:main Apr 24, 2024
42 checks passed
@potiuk potiuk deleted the fix-menu-filtering-side-effects branch April 24, 2024 17:09
@jedcunningham jedcunningham added the type:bug-fix Changelog: Bug Fixes label Apr 26, 2024
jedcunningham pushed a commit that referenced this pull request Apr 26, 2024
The default implementation of filter_permitted_menu_items had a
subtle side-effect. The filtering on child items was done in-place
and modified the menu itself, so it was enough to get the same
worker serve requests for multiple users for the same menu to get
the items removed for subsequent user - even if they had permission
to see it.

Deepcopying the menu items before filtering them should fix the problem

Fixes: #39204
Fixes: #39135
(cherry picked from commit 0d2c0c5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:bug-fix Changelog: Bug Fixes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pools have disappeared from the Admin menu front - admin menu - drop-down non deterministic
6 participants