Skip to content

executor: fix show grants failed after drop granted role#29494

Merged
ti-chi-bot merged 7 commits intopingcap:masterfrom
unconsolable:issue-29473
Nov 10, 2021
Merged

executor: fix show grants failed after drop granted role#29494
ti-chi-bot merged 7 commits intopingcap:masterfrom
unconsolable:issue-29473

Conversation

@unconsolable
Copy link
Contributor

@unconsolable unconsolable commented Nov 5, 2021

Signed-off-by: unconsolable chenzhipeng2012@gmail.com

What problem does this PR solve?

Issue Number: close #29473 #27930

Problem Summary:

What is changed and how it works?

  • In executor of DROP ROLE, remove the role to be dropped from activeRoles
  • Add a test case

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No code

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

Fix show grants failed after drop granted role

Signed-off-by: unconsolable <chenzhipeng2012@gmail.com>
@ti-chi-bot
Copy link
Member

ti-chi-bot commented Nov 5, 2021

[REVIEW NOTIFICATION]

This pull request has been approved by:

  • morgo
  • tiancaiamao

To complete the pull request process, please ask the reviewers in the list to review by filling /cc @reviewer in the comment.
After your PR has acquired the required number of LGTMs, you can assign this pull request to the committer in the list by filling /assign @committer in the comment to help you merge this pull request.

The full list of commands accepted by this bot can be found here.

Details

Reviewer can indicate their review by submitting an approval review.
Reviewer can cancel approval by submitting a request changes review.

@ti-chi-bot ti-chi-bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Nov 5, 2021
@unconsolable
Copy link
Contributor Author

/cc @morgo
Please help on review when available, thanks~

@ti-chi-bot ti-chi-bot requested a review from morgo November 5, 2021 04:28
@tiancaiamao tiancaiamao self-requested a review November 5, 2021 06:23
Signed-off-by: unconsolable <chenzhipeng2012@gmail.com>
if s.IsDropRole {
for i := 0; i < len(activeRoles); i++ {
if activeRoles[i].Username == user.Username && activeRoles[i].Hostname == user.Hostname {
activeRoles = append(activeRoles[:i], activeRoles[i+1:]...)
Copy link
Contributor

Choose a reason for hiding this comment

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

Is the activeRoles information propagated to other TiDB instance?
If not, when you drop the role in one TiDB instance and query in another TiDB instance, the error remains there.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is a problem, but I don't know how to solve it... I read through (*SimpleExec).setRoleRegular and can't find related logic.🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

./executor/simple.go: return domain.GetDomain(e.ctx).NotifyUpdatePrivilege()

I'm not sure whether this works. E.g, update the privilege cache to make every TiDB instance reload the active role info when drop user is called.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I found it hard to do so. In Domain I can't find a way to get the related session, thus I don't know how to get the activeRoles. If we can get it, I think we can check and apply activeRoles in (*Handle).Update().

Copy link
Contributor

@tiancaiamao tiancaiamao left a comment

Choose a reason for hiding this comment

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

OK, at least it solved part of the issue.

@ti-chi-bot ti-chi-bot added the status/LGT1 Indicates that a PR has LGTM 1. label Nov 8, 2021
@morgo
Copy link
Contributor

morgo commented Nov 8, 2021

/run-integration-test

@morgo
Copy link
Contributor

morgo commented Nov 9, 2021

/run-integration-tests

Copy link
Contributor

@morgo morgo left a comment

Choose a reason for hiding this comment

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

LGTM

I think the integration test errors are unrelated.

@ti-chi-bot ti-chi-bot added status/LGT2 Indicates that a PR has LGTM 2. and removed status/LGT1 Indicates that a PR has LGTM 1. labels Nov 9, 2021
@morgo
Copy link
Contributor

morgo commented Nov 9, 2021

/merge

@ti-chi-bot
Copy link
Member

This pull request has been accepted and is ready to merge.

DetailsCommit hash: bd3a05f

@ti-chi-bot ti-chi-bot added the status/can-merge Indicates a PR has been approved by a committer. label Nov 9, 2021
@unconsolable
Copy link
Contributor Author

unconsolable commented Nov 9, 2021

@morgo Shall we keep the issue open to show that it is not fully resolved?

@morgo
Copy link
Contributor

morgo commented Nov 9, 2021

@morgo Shall we keep the issue open to show that it is not fully resolved?

I think we can say this issue is resolved but fork and create another issue. The privilege cache is also automatically re-generated every 5 minutes, so on a live cluster it will eventually resolve itself. Here is a similar case I fixed recently: #27958 -- so there might be other cases as well.

@ti-chi-bot
Copy link
Member

@unconsolable: Your PR was out of date, I have automatically updated it for you.

At the same time I will also trigger all tests for you:

/run-all-tests

If the CI test fails, you just re-trigger the test that failed and the bot will merge the PR for you after the CI passes.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

@ti-chi-bot ti-chi-bot merged commit 898ef6e into pingcap:master Nov 10, 2021
@unconsolable unconsolable deleted the issue-29473 branch November 10, 2021 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-note Denotes a PR that will be considered when it comes time to generate release notes. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

show grants failed after drop granted role

4 participants