Class PersistentSessionsChangelogBasedTransaction<K,V extends SessionEntity>
- All Implemented Interfaces:
SessionsChangelogBasedTransaction<K,
,V> NonBlockingTransaction
- Direct Known Subclasses:
ClientSessionPersistentChangelogBasedTransaction
,UserSessionPersistentChangelogBasedTransaction
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final KeycloakSession
protected final Map<K,
SessionUpdatesList<V>> protected final Map<K,
SessionUpdatesList<V>> -
Constructor Summary
ConstructorsConstructorDescriptionPersistentSessionsChangelogBasedTransaction
(KeycloakSession session, String cacheName, ArrayBlockingQueue<PersistentUpdate> batchingQueue, CacheHolder<K, V> cacheHolder, CacheHolder<K, V> offlineCacheHolder) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addTask
(K key, SessionUpdateTask<V> originalTask) void
addTask
(K key, SessionUpdateTask<V> task, V entity, UserSessionModel.SessionPersistenceState persistenceState) void
asyncCommit
(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage, Consumer<DatabaseUpdate> databaseUpdates) Asynchronously commits the transaction.void
asyncRollback
(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage) Asynchronously rollbacks the transaction.org.infinispan.Cache<K,
SessionEntityWrapper<V>> getCache
(boolean offline) protected SessionFunction<V>
getLifespanMsLoader
(boolean offline) protected SessionFunction<V>
getMaxIdleMsLoader
(boolean offline) protected Map<K,
SessionUpdatesList<V>> getUpdates
(boolean offline) importSession
(RealmModel realmModel, K key, SessionEntityWrapper<V> session, boolean offline, long lifespan, long maxIdle) Imports a session from an external source into theCache
.void
importSessionsConcurrently
(RealmModel realmModel, Map<K, SessionEntityWrapper<V>> sessions, boolean offline) Imports multiple sessions from an external source into theCache
.void
reloadEntityInCurrentTransaction
(RealmModel realm, K key, SessionEntityWrapper<V> entity) Deprecated, for removal: This API element is subject to removal in a future version.
-
Field Details
-
kcSession
-
updates
-
offlineUpdates
-
-
Constructor Details
-
PersistentSessionsChangelogBasedTransaction
public PersistentSessionsChangelogBasedTransaction(KeycloakSession session, String cacheName, ArrayBlockingQueue<PersistentUpdate> batchingQueue, CacheHolder<K, V> cacheHolder, CacheHolder<K, V> offlineCacheHolder)
-
-
Method Details
-
getCache
-
getLifespanMsLoader
-
getMaxIdleMsLoader
-
getUpdates
-
get
-
asyncCommit
public void asyncCommit(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage, Consumer<DatabaseUpdate> databaseUpdates) Description copied from interface:NonBlockingTransaction
Asynchronously commits the transaction.The implementation should not block the thread and add any (or none)
CompletionStage
into thestage
.Any blocking operation should be consumed by the
databaseUpdates
. It will be executed at a later instant.- Specified by:
asyncCommit
in interfaceNonBlockingTransaction
- Parameters:
stage
- TheAggregateCompletionStage
to collect theCompletionStage
.databaseUpdates
- TheConsumer
to use for blocking/database updates.
-
asyncRollback
public void asyncRollback(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage) Description copied from interface:NonBlockingTransaction
Asynchronously rollbacks the transaction.The implementation should not block the thread and add any (or none)
CompletionStage
into thestage
.- Specified by:
asyncRollback
in interfaceNonBlockingTransaction
- Parameters:
stage
- TheAggregateCompletionStage
to collect theCompletionStage
.
-
addTask
- Specified by:
addTask
in interfaceSessionsChangelogBasedTransaction<K,
V extends SessionEntity>
-
addTask
public void addTask(K key, SessionUpdateTask<V> task, V entity, UserSessionModel.SessionPersistenceState persistenceState) -
reloadEntityInCurrentTransaction
@Deprecated(forRemoval=true, since="26.4") public void reloadEntityInCurrentTransaction(RealmModel realm, K key, SessionEntityWrapper<V> entity) Deprecated, for removal: This API element is subject to removal in a future version. -
importSession
public SessionEntityWrapper<V> importSession(RealmModel realmModel, K key, SessionEntityWrapper<V> session, boolean offline, long lifespan, long maxIdle) Imports a session from an external source into theCache
.If a session already exists in the cache, this method does not insert the
session
. The invoker should use the session returned by this method invocation. When the session is successfully imported, this method returns null and thesession
can be used by the transaction.This transaction will keep track of further changes in the session.
- Parameters:
realmModel
- TheRealmModel
where the session belong to.key
- The cache's key.session
- The session to import.lifespan
- How long the session stays cached until it is expired and removed.maxIdle
- How long the session can be idle (without reading or writing) before being removed.offline
-true
if it is an offline session.- Returns:
- The existing cached session. If it returns
null
, it means thesession
used in the parameters was cached.
-
importSessionsConcurrently
public void importSessionsConcurrently(RealmModel realmModel, Map<K, SessionEntityWrapper<V>> sessions, boolean offline) Imports multiple sessions from an external source into theCache
.If one or more sessions already exist in the
Cache
, or is expired, it will not be imported.This transaction will keep track of further changes in the sessions.
- Parameters:
realmModel
- TheRealmModel
where the sessions belong to.sessions
- TheMap
with the cache's key/session mapping to be imported.offline
-true
if it is an offline session.
-