Comments (4)
In addition, we would also like to consider fuzzing the startup time of the cleanup job to mitigate the "thundering herd" issue, where all scaled instances start their job at once.
from identityserver.
Docs for reference - https://learn.microsoft.com/en-us/ef/core/saving/execute-insert-update-delete
from identityserver.
I created this PR to use ExecuteDelete during frequently used persistedgrant operations #1427
from identityserver.
Making this change probably can't be done at all for server side sessions, and might require a breaking change for token cleanup.
The session cleanup job needs to load the sessions it is cleaning up in order to do coordination (we can't send logout notifications when a session times out without loading the session to find out which clients to notify). There might be small optimizations possible, but the fundamental problem remains that we need to load the records as they are deleted.
The token cleanup job could be changed to use these APIs, but we would need to stop using the IOperationalStoreNotification
. Currently, the token cleanup job sends all the records it deletes to that service, if one is registered. This is an optional dependency that I didn't even know we had, but it's been around for years now. Obviously if we change our cleanup to stop loading the records we're deleting, we can't send those records to the notification service, and this is a breaking change for anyone who implemented that interface.
Options:
- Accept the breaking change
- Maintain two versions of the cleanup service - one which is the same as we have today, and the other which doesn't send notifications because it is more optimized. We could make the optimized cleanup service be the default, but make the method that registers the notification switch to the legacy service
- As a variation of option 2, we could put both code paths in the cleanup service, and switch between them based on if we have a registered notification service
- Reject this idea and do nothing
from identityserver.
Related Issues (20)
- Consider post-quantum cryptography sample
- Consider allowing customization of PromptValuesSupported
- Consider allowing multiple IEventSink registrations HOT 2
- Investigate support for X509 Certs and EC Keys HOT 1
- Add logging when DistributedCacheStateDataFormatter returns null HOT 8
- Let EF migrations create default table names
- GetIdentityServerRelativeUrl should take into account when IdentityServer is running at a subpath HOT 1
- Infinite loop when max_age=0
- Claim Issuer not persisted when using Server Side Sessions HOT 3
- IdentityServer Error LogLevel HOT 1
- Add server side session support for the external cookie scheme HOT 2
- Cookie Expiration with Serverside sessions doesn't revoke tokens
- Consider lowering the ClockSkew in TokenValidator
- Consider letting redirect url respect response_mode after receiving invalid request on authorization endpoint
- Consider extensibility point for sub/sid validation during endsession HOT 1
- Identity Server Login and Logout Localization Limitations HOT 7
- Consider adding strict license check for features in dev/test
- PromptMode Login with Pushed Authorization Requests Get Stuck in Login Loop HOT 3
- Investigate EF Core 8 performance issues
- Consider adding more validation to processed max_age and prompt
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from identityserver.