-
Notifications
You must be signed in to change notification settings - Fork 317
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
Add concurency configuration option for keycloak backend #2121
Add concurency configuration option for keycloak backend #2121
Conversation
8f1ebba
to
fe81244
Compare
Changed Packages
|
fe81244
to
3324173
Compare
cf15bc2
to
58ac3c8
Compare
4f44a5c
to
525aad8
Compare
@AndrienkoAleksandr Can you please generate changeset when you will have time? |
Tested with 1000 groups and 500000 users, works as expected.
So it will take more scheduled runs to commit all users in Keycloak. Tested also locally as dynamic plugin in |
@dzemanov, Yes, I agree that this could happen if you set a very high maxConcurrency value. I recorded a demo where I demonstrated that, with a reasonable maxConcurrency value, you can fetch 5,000,000 users and 1,000 groups in the first scheduled run iteration and commit all the data at once. Subsequent scheduled runs should also succeed without losing users or groups. Lost users and groups could occur, but only if you encounter actual network issues. P.S.: Thank you for your comment. I have changed the default maxConcurrency value; it is no longer set to infinity. I have provided a default value of 20. I'm not sure if this is the optimal default, but it is much better than infinity, which could definitely lead to a DoS attack on the Keycloak server. |
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.
Thanks for the contribution @AndrienkoAleksandr, I can't confidently review the actual code changes as I don't know this plugin very well and will leave that to other reviewers but I did notice some more general items that need to be changed. 👍
workspaces/keycloak/plugins/catalog-backend-module-keycloak/.prettierignore
Outdated
Show resolved
Hide resolved
workspaces/keycloak/plugins/catalog-backend-module-keycloak/package.json
Outdated
Show resolved
Hide resolved
31ab239
to
eb10859
Compare
@awanlin, I handled your code review feedback. |
Thanks @dzemanov, done. |
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.
Thanks for following up @AndrienkoAleksandr, there's a few structural items the need to be addressed still, sorry.
workspaces/keycloak/plugins/catalog-backend-module-keycloak/.prettierignore
Outdated
Show resolved
Hide resolved
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.
This looks to be in a good state now, would still like someone with more knowledge about the plugin itself to review so not giving an explicit approval till that happens.
@schultzp2020, can you look at this? Just asking as it looks like you got tagged to review 👍
Maybe @PatAKnight or @dzemanov? |
workspaces/keycloak/plugins/catalog-backend-module-keycloak/src/lib/authenticate.ts
Outdated
Show resolved
Hide resolved
Other then minor comment, looks good to me. |
Hi @AndrienkoAleksandr, looks like we need to resolve the conflict and address the comment from @dzemanov 👍 |
d1ed63b
to
25f706e
Compare
Done. |
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
25f706e
to
3eae12f
Compare
Signed-off-by: Oleksandr Andriienko <[email protected]>
Signed-off-by: Oleksandr Andriienko <[email protected]>
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.
A simple and quick question while I prepare to test
workspaces/keycloak/plugins/catalog-backend-module-keycloak/src/lib/read.ts
Outdated
Show resolved
Hide resolved
Signed-off-by: Oleksandr Andriienko <[email protected]>
Tested again and works fine. Great work @AndrienkoAleksandr 🪄 |
lgtm! |
@awanlin can you approve the PR when you get a chance? |
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.
All review comments were addressed, lgtm!
@awanlin can you remove block from this pr, please ? |
Cleared out on my end! 🚀 @04kash, will leave this to you to merge 👍 |
) * fix(keycloak): customize quantity of parallel Keycloak requests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(rbac): simplify helpers unit test Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use common js version of the p-limit Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add one more backstage client to import users, groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add user for testing import Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use original p-limit again with help of inclusion Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): simplify code Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix maxConcurrency option Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): align prettier in the workspace Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix api report Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update token for keycloak client Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix unit tests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): try to align prettier again Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): ignore report.api.md for prettier Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): complete ts docs Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix token update for fetching groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): dramatically speed up parsing users and groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix test compilation Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): remove code duplication Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix concurrent update token issue Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): change maxConcurrency default, add doc Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix return type in case error Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): regenerate report.api.md Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): downgrade and freeze version of the prettier Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): keep prettier dependecny only in the root package.json Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add changeset Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): yarn dedupe Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use log level debug Signed-off-by: Oleksandr Andriienko <[email protected]> --------- Signed-off-by: Oleksandr Andriienko <[email protected]> Co-authored-by: Johannes Will <[email protected]> Co-authored-by: Kashish Mittal <[email protected]> Signed-off-by: gaelgoth <[email protected]>
) * fix(keycloak): customize quantity of parallel Keycloak requests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(rbac): simplify helpers unit test Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use common js version of the p-limit Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add one more backstage client to import users, groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add user for testing import Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use original p-limit again with help of inclusion Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): simplify code Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix maxConcurrency option Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): align prettier in the workspace Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix api report Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update token for keycloak client Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix unit tests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): try to align prettier again Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): ignore report.api.md for prettier Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): complete ts docs Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix token update for fetching groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): dramatically speed up parsing users and groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix test compilation Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): remove code duplication Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix concurrent update token issue Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): change maxConcurrency default, add doc Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix return type in case error Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): regenerate report.api.md Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): downgrade and freeze version of the prettier Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): keep prettier dependecny only in the root package.json Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add changeset Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): yarn dedupe Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use log level debug Signed-off-by: Oleksandr Andriienko <[email protected]> --------- Signed-off-by: Oleksandr Andriienko <[email protected]> Co-authored-by: Johannes Will <[email protected]> Co-authored-by: Kashish Mittal <[email protected]>
) * fix(keycloak): customize quantity of parallel Keycloak requests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(rbac): simplify helpers unit test Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use common js version of the p-limit Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add one more backstage client to import users, groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add user for testing import Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use original p-limit again with help of inclusion Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): simplify code Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix maxConcurrency option Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): align prettier in the workspace Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix api report Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update token for keycloak client Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix unit tests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): try to align prettier again Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): ignore report.api.md for prettier Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): complete ts docs Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix token update for fetching groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): dramatically speed up parsing users and groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix test compilation Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): remove code duplication Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix concurrent update token issue Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): change maxConcurrency default, add doc Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix return type in case error Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): regenerate report.api.md Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): downgrade and freeze version of the prettier Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): keep prettier dependecny only in the root package.json Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add changeset Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): yarn dedupe Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use log level debug Signed-off-by: Oleksandr Andriienko <[email protected]> --------- Signed-off-by: Oleksandr Andriienko <[email protected]> Co-authored-by: Johannes Will <[email protected]> Co-authored-by: Kashish Mittal <[email protected]>
) * fix(keycloak): customize quantity of parallel Keycloak requests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(rbac): simplify helpers unit test Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use common js version of the p-limit Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add one more backstage client to import users, groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add user for testing import Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use original p-limit again with help of inclusion Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): simplify code Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix maxConcurrency option Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): align prettier in the workspace Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix api report Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update token for keycloak client Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix unit tests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): try to align prettier again Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): ignore report.api.md for prettier Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): complete ts docs Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix token update for fetching groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): dramatically speed up parsing users and groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix test compilation Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): remove code duplication Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix concurrent update token issue Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): change maxConcurrency default, add doc Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix return type in case error Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): regenerate report.api.md Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): downgrade and freeze version of the prettier Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): keep prettier dependecny only in the root package.json Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add changeset Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): yarn dedupe Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use log level debug Signed-off-by: Oleksandr Andriienko <[email protected]> --------- Signed-off-by: Oleksandr Andriienko <[email protected]> Co-authored-by: Johannes Will <[email protected]> Co-authored-by: Kashish Mittal <[email protected]>
) * fix(keycloak): customize quantity of parallel Keycloak requests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(rbac): simplify helpers unit test Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use common js version of the p-limit Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add one more backstage client to import users, groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add user for testing import Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use original p-limit again with help of inclusion Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): simplify code Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix maxConcurrency option Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): align prettier in the workspace Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix api report Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update token for keycloak client Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix unit tests Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): try to align prettier again Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): ignore report.api.md for prettier Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): complete ts docs Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix token update for fetching groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): dramatically speed up parsing users and groups Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix test compilation Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): remove code duplication Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix concurrent update token issue Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): change maxConcurrency default, add doc Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): fix return type in case error Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): regenerate report.api.md Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): downgrade and freeze version of the prettier Downgrade and freeze the Prettier version to resolve a CI conflict between Prettier and the documentation generator tool. Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): keep prettier dependecny only in the root package.json Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): add changeset Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): handle code review feedback Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): update yarn.lock Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): yarn dedupe Signed-off-by: Oleksandr Andriienko <[email protected]> * fix(keycloak): use log level debug Signed-off-by: Oleksandr Andriienko <[email protected]> --------- Signed-off-by: Oleksandr Andriienko <[email protected]> Co-authored-by: Johannes Will <[email protected]> Co-authored-by: Kashish Mittal <[email protected]> Signed-off-by: Harmen Brinkman <[email protected]>
Hey, I just made a Pull Request!
What does this pr fix:
janus-idp/backstage-plugins#2471
https://issues.redhat.com/browse/RHIDP-4793
Demo:
https://youtu.be/miQ9DgaOYcg
✔️ Checklist
Signed-off-by
line in the message. (more info)