Skip to content

fix(roles): prevent 404 and silent user removal on large role edits#40178

Merged
villebro merged 9 commits into
apache:masterfrom
madhushreeag:fix-prevent-error-saving-roles
May 19, 2026
Merged

fix(roles): prevent 404 and silent user removal on large role edits#40178
villebro merged 9 commits into
apache:masterfrom
madhushreeag:fix-prevent-error-saving-roles

Conversation

@madhushreeag
Copy link
Copy Markdown
Contributor

@madhushreeag madhushreeag commented May 16, 2026

SUMMARY

When editing a role with many users (e.g. ~950) and removing just one, far more users were silently dropped, sometimes with 130+ extra removals.

Root cause: fetchPaginatedData fetches page 0 first to get the total count, then fires all remaining page requests concurrently via Promise.all, without an ORDER BY. The database returns rows in non-deterministic order, so page boundaries shift between requests: some users appear on two pages (duplicates) and others are skipped entirely. The frontend ends up with the correct item count but significantly fewer unique IDs. Submitting that deduped set as the full replacement list silently removes the skipped users.

We also saw 404 on save from FAB's update_role_users, which does User.id.in_(user_ids) to look up submitted IDs (SQL IN deduplicates), then checks len(users) != len(user_ids). With duplicates in the submitted list, the deduped DB result was shorter than the raw input — e.g. 819 != 951 — triggering the 404.

Fix:

  • Added optional orderBy parameter to fetchPaginatedData (order_column / order_direction in the rison query), making OFFSET pagination deterministic across concurrent page requests.
  • The users fetch in the role edit modal now uses ORDER BY id ASC.
  • Added ID-based deduplication in the setData callback as a belt-and-suspenders guard against any residual overlap.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Before:

Screen.Recording.2026-05-18.at.11.00.56.PM.mov

After:

Screen.Recording.2026-05-18.at.11.18.12.PM.mov

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags:
  • Changes UI
  • Includes DB Migration (follow approval process in SIP-59)
    • Migration is atomic, supports rollback & is backwards-compatible
    • Confirm DB migration upgrade and downgrade tested
    • Runtime estimates and downtime expectations provided
  • Introduces new feature or API
  • Removes existing feature or API

@dosubot dosubot Bot added authentication:RBAC Related to RBAC change:backend Requires changing the backend change:frontend Requires changing the frontend labels May 16, 2026
@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 16, 2026

Code Review Agent Run #33fbdb

Actionable Suggestions - 0
Additional Suggestions - 1
  • superset/security/manager.py - 1
    • Missing audit logging for user assignment · Line 181-211
      The `update_role_users` PUT endpoint modifies role membership but doesn't trigger audit logging like the parent class's `post_update` hook does. Other CRUD operations in `SupersetRoleApi` (post_add, post_update, post_delete) log events; user assignment should follow the same pattern for consistency and compliance tracking.
      Code suggestion
      --- superset/security/manager.py (lines 195-211) ---
       195:             .all()
       196:             )
       197:             role.user = users
       198: +            _log_audit_event("RoleUpdated", {"role_name": role.name, "role_id": role.id})
       199:             self.datamodel.edit(role)
       200:             return self.response(
Review Details
  • Files reviewed - 2 · Commit Range: 7d2abbd..7d2abbd
    • superset-frontend/src/features/roles/RoleListEditModal.tsx
    • superset/security/manager.py
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Comment thread superset/security/manager.py Outdated
Comment on lines +192 to +207
user_ids = list(set(item["user_ids"]))
users = (
current_app.appbuilder.session.query(User)
.filter(User.id.in_(user_ids))
.all()
)
role.user = users
self.datamodel.edit(role)
return self.response(
200,
**{
API_RESULT_RES_KEY: self.update_role_user_schema.dump(
item, many=False
)
},
)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggestion: The endpoint now mutates the incoming user_ids (deduplicating and potentially dropping IDs not found in the DB) but still returns a payload serialized from the original item, so the response can report users that were not actually persisted. Return the saved user IDs (or the updated role state) instead of echoing the pre-query request object to avoid response/data mismatch. [api mismatch]

Severity Level: Major ⚠️
- ⚠️ Role users endpoint response misrepresents persisted role-user assignments.
- ⚠️ External API clients may cache incorrect role membership state.
- ⚠️ Troubleshooting role assignment issues becomes harder for administrators.
Steps of Reproduction ✅
1. Run Superset with this PR so that `SupersetRoleApi` is registered as a FAB API
blueprint (see `superset/security/manager.py:160-165` and `register_views` at
`superset/security/manager.py:3636-3666`).

2. Ensure you have a valid role `R` and at least one existing user `U` (any admin-created
role and user are sufficient; the role edit UI uses this API via `updateRoleUsers` in
`superset-frontend/src/features/roles/utils.ts:11-15`).

3. Using an HTTP client authenticated as an admin, call `PUT
/api/v1/security/roles/R/users` (endpoint exposed by `update_role_users` at
`superset/security/manager.py:181-207`) with JSON body `{"user_ids": [U, 9999999]}` where
`9999999` does not correspond to any `User.id` in the database.

4. In `update_role_users` (`superset/security/manager.py:187-199`), the code deduplicates
into `user_ids = list(set(item["user_ids"]))` and queries `User` with
`.filter(User.id.in_(user_ids)).all()`, so only real users (e.g., `U`) are loaded and
persisted via `role.user = users` and `self.datamodel.edit(role)`, but the 200 response is
built with `self.update_role_user_schema.dump(item, many=False)` where `item["user_ids"]`
still contains `[U, 9999999]`, so the response body reports user IDs that were not
actually saved.

5. Confirm the mismatch by querying role membership via the users API used by the UI: `GET
/api/v1/security/users/?q=(filters:!((col:roles,opr:rel_m_m,value:R)))` (same pattern as
`fetchPaginatedData` in
`superset-frontend/src/features/roles/RoleListEditModal.tsx:126-145`); the results list
only user `U` as a member of role `R`, while the prior PUT response claimed `[U,
9999999]`, demonstrating the response/data inconsistency.

Fix in Cursor | Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** superset/security/manager.py
**Line:** 192:207
**Comment:**
	*Api Mismatch: The endpoint now mutates the incoming `user_ids` (deduplicating and potentially dropping IDs not found in the DB) but still returns a payload serialized from the original `item`, so the response can report users that were not actually persisted. Return the saved user IDs (or the updated role state) instead of echoing the pre-query request object to avoid response/data mismatch.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The response now serializes {"user_ids": [u.id for u in users]} — the IDs that were actually queried from the DB and persisted — so the response is always an accurate reflection of the roles user assignments after the save.

@bito-code-review
Copy link
Copy Markdown
Contributor

The PR diff shows that the update_role_users endpoint in superset/security/manager.py is modifying the incoming user_ids by deduplicating them (user_ids = list(set(item["user_ids"]))) but still returning a payload serialized from the original item, which includes the pre-deduplicated and potentially invalid user IDs. This results in a mismatch between the response and the actual persisted data. The suggestion is to return the saved user IDs or the updated role state instead of echoing the original request to avoid this inconsistency. The fix would involve modifying the response to use the users that were actually persisted rather than the original item. This would ensure that the response accurately reflects the state of the data in the database.

superset/security/manager.py

def update_role_users(self, role_id: int) -> Any:
    """Override to deduplicate user IDs and handle missing users gracefully."""
    try:
        item = self.update_role_user_schema.load(request.json)
        role = self.datamodel.get(role_id)
        if not role:
            return self.response_404()

        user_ids = list(set(item["user_ids"]))
        users = (
            current_app.appbuilder.session.query(User)
            .filter(User.id.in_(user_ids))
            .all()
        )
        role.user = users
        self.datamodel.edit(role)
        return self.response(
            200,
            **{
                API_RESULT_RES_KEY: self.update_role_user_schema.dump(
                    item, many=False
                )
            },
        )
    except ValidationError as error:
        return self.response_400(message=error.messages)
    except IntegrityError as ex:
        return self.response_422(message=str(ex.orig))

@codecov
Copy link
Copy Markdown

codecov Bot commented May 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.16%. Comparing base (ac5e8f1) to head (0b48d76).

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #40178      +/-   ##
==========================================
+ Coverage   54.57%   64.16%   +9.59%     
==========================================
  Files        2591     2591              
  Lines      138283   138293      +10     
  Branches    32083    32084       +1     
==========================================
+ Hits        75462    88736   +13274     
+ Misses      62476    48027   -14449     
- Partials      345     1530    +1185     
Flag Coverage Δ
javascript 67.04% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…he IDs that were actually queried from the DB and persisted — so the response is always an accurate reflection of the roles user assignments after the save.
@madhushreeag madhushreeag force-pushed the fix-prevent-error-saving-roles branch from 01cf8a5 to e019cd2 Compare May 16, 2026 04:13
@madhushreeag madhushreeag force-pushed the fix-prevent-error-saving-roles branch from e019cd2 to 05a0ef7 Compare May 16, 2026 04:21
@madhushreeag
Copy link
Copy Markdown
Contributor Author

/review

@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 16, 2026

Code Review Agent Run #182ed0

Actionable Suggestions - 0
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset/security/manager.py - 1
Review Details
  • Files reviewed - 3 · Commit Range: 7d2abbd..05a0ef7
    • superset-frontend/src/features/roles/RoleListEditModal.test.tsx
    • superset-frontend/src/features/roles/RoleListEditModal.tsx
    • superset/security/manager.py
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 16, 2026

Code Review Agent Run #919152

Actionable Suggestions - 0
Additional Suggestions - 2
  • superset/security/manager.py - 2
    • Potentially undefined schema reference · Line 200-200
      The OpenAPI spec references `RoleUserPutSchema` but I couldn't verify this schema exists in the codebase. Per rule [10906], documentation must accurately reflect implemented code. Ensure the schema is properly defined or update the reference.
    • Missing audit logging for role users update · Line 181-247
      Add `_log_audit_event("RoleUsersUpdated", {"role_id": role_id, "user_ids": [u.id for u in users]})` before the response to log role user assignment changes.
Filtered by Review Rules

Bito filtered these suggestions based on rules created automatically for your feedback. Manage rules.

  • superset/security/manager.py - 1
Review Details
  • Files reviewed - 3 · Commit Range: 7d2abbd..05a0ef7
    • superset-frontend/src/features/roles/RoleListEditModal.test.tsx
    • superset-frontend/src/features/roles/RoleListEditModal.tsx
    • superset/security/manager.py
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@madhushreeag
Copy link
Copy Markdown
Contributor Author

madhushreeag commented May 17, 2026

Code Review Agent Run #919152

Actionable Suggestions - 0
Additional Suggestions - 2

  • superset/security/manager.py - 2

    • Potentially undefined schema reference · Line 200-200
      The OpenAPI spec references RoleUserPutSchema but I couldn't verify this schema exists in the codebase. Per rule [10906], documentation must accurately reflect implemented code. Ensure the schema is properly defined or update the reference.
    • Missing audit logging for role users update · Line 181-247
      Add _log_audit_event("RoleUsersUpdated", {"role_id": role_id, "user_ids": [u.id for u in users]}) before the response to log role user assignment changes.

Filtered by Review Rules
Review Details
Bito Usage Guide
AI Code Review powered by Bito Logo

RoleUserPutSchema is defined in flask_appbuilder/security/sqla/apis/role/schema.py and registered into the OpenAPI spec by the base RoleApi class that SupersetRoleApi inherits from. The $ref is valid and resolves correctly at runtime; it just isn't visible in the Superset source tree since it lives in the installed FAB package.

…he roles users are persisted, it now calls _log_audit_event("RoleUsersUpdated", {"role_id": role_id, "user_ids": [...]}) with the IDs that were actually saved. This is consistent with the existing audit logging on post_add, post_update, and post_delete on the same class.
@pull-request-size pull-request-size Bot added size/L and removed size/M labels May 17, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented May 17, 2026

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 9d0ff06
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a0bf1bde8ff5f0008c1f865
😎 Deploy Preview https://deploy-preview-40178--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 17, 2026

Code Review Agent Run #6d00f2

Actionable Suggestions - 0
Additional Suggestions - 1
  • superset/security/manager.py - 1
    • Audit payload missing role_name · Line 236-239
      The audit payload for `RoleUsersUpdated` is inconsistent with other role audit events in `SupersetRoleApi`. All other role events include both `role_name` and `role_id` (e.g., lines 173, 176, 179), but this event only logs `role_id`. Adding `role_name` maintains consistency and improves audit traceability for security investigations.
      Code suggestion
      --- superset/security/manager.py (lines 236-239) ---
       236:             _log_audit_event(
       237:                 "RoleUsersUpdated",
       238:                 {"role_id": role_id, "role_name": role.name, "user_ids": [u.id for u in users]},
       239:             )
Review Details
  • Files reviewed - 1 · Commit Range: 05a0ef7..dcf3656
    • superset/security/manager.py
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@madhushreeag madhushreeag force-pushed the fix-prevent-error-saving-roles branch from e380581 to f44add4 Compare May 18, 2026 02:51
@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 18, 2026

Code Review Agent Run #f199f7

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: dcf3656..f44add4
    • superset/security/manager.py
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • MyPy (Static Code Analysis) - ✔︎ Successful
    • Astral Ruff (Static Code Analysis) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@villebro villebro self-assigned this May 18, 2026
@villebro
Copy link
Copy Markdown
Member

@madhushreeag some questions/comments before I post a full review:

  • do we expect there to be duplicates in the user list? I'm surprised this would be the case, as I assume we have unique indexes in place on the relevant metastore tables.
  • If the frontend now deduplicates users, do we need the backend change? Rather than override the FAB method, I'd prefer to upstream any critical fixes to FAB so FAB gets the fixes + we don't have override logic in place that may become stale as FAB changes its internals
  • I'm surprised that the PUT would overflow with a few thousand user ids. If this is the case, we may need to change our request size limits to accommodate for larger roles.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

madhushree agarwal added 2 commits May 18, 2026 13:09
  return non-deterministic boundaries — some users appear on multiple pages
  (duplicates) while others are skipped. Add orderBy support to fetchPaginatedData and fetch role users ordered
  by id ASC so page boundaries are stable. Add ID deduplication in setData
  as a safety net.
@pull-request-size pull-request-size Bot added size/M and removed size/L labels May 19, 2026
@madhushreeag
Copy link
Copy Markdown
Contributor Author

@madhushreeag some questions/comments before I post a full review:

  • do we expect there to be duplicates in the user list? I'm surprised this would be the case, as I assume we have unique indexes in place on the relevant metastore tables.
  • If the frontend now deduplicates users, do we need the backend change? Rather than override the FAB method, I'd prefer to upstream any critical fixes to FAB so FAB gets the fixes + we don't have override logic in place that may become stale as FAB changes its internals
  • I'm surprised that the PUT would overflow with a few thousand user ids. If this is the case, we may need to change our request size limits to accommodate for larger roles.

You're right that the DB has unique indexes — there are no duplicate rows in ab_user_role. The duplicates are a pagination artifact, not a data integrity issue. Since fetchPaginatedData fires all page requests concurrently via Promise.all, the same row can fall on page 3 in one request and page 4 in another, depending on what the query planner does at that instant. The fix is ORDER BY id ASC on the users fetch, which makes page boundaries stable. The deduplication is just a safety net. I can still remove the dedupe if it feels redundant.

The backend changes have been removed from this PR. The ORDER BY fix eliminates duplicates at the source, so there's nothing incorrect being sent to FAB — no backend override needed.

Agreed that a few thousand integer IDs shouldn't overflow a default request size limit — a role with 950 users is only a few KB in the request body. We haven't hit 413 in practice with the current fix in place. We were seeing 404 due to the pagination issue.

@madhushreeag madhushreeag changed the title fix(roles): prevent 413/404 errors when saving roles with many users fix(roles): prevent 404 and silent user removal on large role edits May 19, 2026
@madhushreeag
Copy link
Copy Markdown
Contributor Author

/review

@bito-code-review
Copy link
Copy Markdown
Contributor

bito-code-review Bot commented May 19, 2026

Code Review Agent Run #3e06e0

Actionable Suggestions - 0
Review Details
  • Files reviewed - 4 · Commit Range: 7d2abbd..e860684
    • superset-frontend/src/features/roles/RoleFormItems.tsx
    • superset-frontend/src/features/roles/RoleListEditModal.test.tsx
    • superset-frontend/src/features/roles/RoleListEditModal.tsx
    • superset-frontend/src/utils/fetchOptions.ts
  • Files skipped - 0
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful
    • Eslint (Linter) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

@pull-request-size pull-request-size Bot added size/S and removed size/M labels May 19, 2026
Copy link
Copy Markdown
Member

@villebro villebro left a comment

Choose a reason for hiding this comment

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

Amazing, thanks for fixing this! ❤️ I tested this on a large deployment and was able to repro the issue. A few follow-up questions came to mind:

  • Do we perhaps have similar bugs on other components based on FecthPaginatedOptions? Could be worthwhile throwing Claude at this to double check.
  • Going to even larger scale, could this proactive full fetching become a bottleneck, and if so, could we replace this with real pagination, where we initially just fetch the first page, and when scrolling down or starting to type, the list is dynamically updated with values?

@villebro villebro merged commit 852d018 into apache:master May 19, 2026
74 of 76 checks passed
@bito-code-review
Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped – PR Already Merged

Bito scheduled an automatic review for this pull request, but the review was skipped because this PR was merged before the review could be run.
No action is needed if you didn't intend to review it. To get a review, you can type /review in a comment and save it

kasiazjc pushed a commit that referenced this pull request May 26, 2026
…40178)

Co-authored-by: madhushree agarwal <madhushree_agarwal@apple.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

authentication:RBAC Related to RBAC change:backend Requires changing the backend change:frontend Requires changing the frontend size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants