KEYCLOAK-5617 KEYCLOAK-5993 Race condition putting new user in user cache
This commit is contained in:
parent
7e072abf74
commit
ae573f4814
1 changed files with 9 additions and 3 deletions
|
@ -349,6 +349,8 @@ public class UserCacheSession implements UserCache {
|
||||||
StorageId storageId = delegate.getFederationLink() != null ?
|
StorageId storageId = delegate.getFederationLink() != null ?
|
||||||
new StorageId(delegate.getFederationLink(), delegate.getId()) : new StorageId(delegate.getId());
|
new StorageId(delegate.getFederationLink(), delegate.getId()) : new StorageId(delegate.getId());
|
||||||
CachedUser cached = null;
|
CachedUser cached = null;
|
||||||
|
UserAdapter adapter = null;
|
||||||
|
|
||||||
if (!storageId.isLocal()) {
|
if (!storageId.isLocal()) {
|
||||||
ComponentModel component = realm.getComponent(storageId.getProviderId());
|
ComponentModel component = realm.getComponent(storageId.getProviderId());
|
||||||
UserStorageProviderModel model = new UserStorageProviderModel(component);
|
UserStorageProviderModel model = new UserStorageProviderModel(component);
|
||||||
|
@ -364,7 +366,11 @@ public class UserCacheSession implements UserCache {
|
||||||
if (policy != null && policy == UserStorageProviderModel.CachePolicy.NO_CACHE) {
|
if (policy != null && policy == UserStorageProviderModel.CachePolicy.NO_CACHE) {
|
||||||
return delegate;
|
return delegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
cached = new CachedUser(revision, realm, delegate, notBefore);
|
cached = new CachedUser(revision, realm, delegate, notBefore);
|
||||||
|
adapter = new UserAdapter(cached, this, session, realm);
|
||||||
|
onCache(realm, adapter, delegate);
|
||||||
|
|
||||||
if (policy == null || policy == UserStorageProviderModel.CachePolicy.DEFAULT) {
|
if (policy == null || policy == UserStorageProviderModel.CachePolicy.DEFAULT) {
|
||||||
cache.addRevisioned(cached, startupRevision);
|
cache.addRevisioned(cached, startupRevision);
|
||||||
} else {
|
} else {
|
||||||
|
@ -388,12 +394,12 @@ public class UserCacheSession implements UserCache {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cached = new CachedUser(revision, realm, delegate, notBefore);
|
cached = new CachedUser(revision, realm, delegate, notBefore);
|
||||||
|
adapter = new UserAdapter(cached, this, session, realm);
|
||||||
|
onCache(realm, adapter, delegate);
|
||||||
cache.addRevisioned(cached, startupRevision);
|
cache.addRevisioned(cached, startupRevision);
|
||||||
}
|
}
|
||||||
UserAdapter adapter = new UserAdapter(cached, this, session, realm);
|
|
||||||
onCache(realm, adapter, delegate);
|
|
||||||
return adapter;
|
|
||||||
|
|
||||||
|
return adapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue