Class InfinispanChangelogBasedTransaction<K,V extends SessionEntity>
- All Implemented Interfaces:
SessionsChangelogBasedTransaction<K,,V> NonBlockingTransaction
- Author:
- Marek Posolda
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final CacheHolder<K,V> protected final KeycloakSessionstatic final org.jboss.logging.Loggerprotected final Map<K,SessionUpdatesList<V>> -
Constructor Summary
ConstructorsConstructorDescriptionInfinispanChangelogBasedTransaction(KeycloakSession kcSession, CacheHolder<K, V> cacheHolder) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddTask(K key, SessionUpdateTask<V> task) voidaddTask(K key, SessionUpdateTask<V> task, V entity, UserSessionModel.SessionPersistenceState persistenceState) voidasyncCommit(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage, Consumer<DatabaseUpdate> databaseUpdates) Asynchronously commits the transaction.voidasyncRollback(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage) Asynchronously rollbacks the transaction.org.infinispan.Cache<K,SessionEntityWrapper<V>> getCache()importSession(RealmModel realmModel, K key, SessionEntityWrapper<V> session, long lifespan, long maxIdle) Imports a session from an external source into theCache.voidimportSessionsConcurrently(RealmModel realmModel, Map<K, SessionEntityWrapper<V>> sessions, SessionFunction<V> lifespanFunction, SessionFunction<V> maxIdleFunction) Imports multiple sessions from an external source into theCache.voidreloadEntityInCurrentTransaction(RealmModel realm, K key, SessionEntityWrapper<V> entity) Deprecated, for removal: This API element is subject to removal in a future version.voidrestartEntity(K key, SessionUpdateTask<V> restartTask)
-
Field Details
-
logger
public static final org.jboss.logging.Logger logger -
kcSession
-
updates
-
cacheHolder
-
-
Constructor Details
-
InfinispanChangelogBasedTransaction
-
-
Method Details
-
addTask
- Specified by:
addTaskin interfaceSessionsChangelogBasedTransaction<K,V extends SessionEntity>
-
restartEntity
- Specified by:
restartEntityin interfaceSessionsChangelogBasedTransaction<K,V extends SessionEntity>
-
addTask
public void addTask(K key, SessionUpdateTask<V> task, V entity, UserSessionModel.SessionPersistenceState persistenceState) -
reloadEntityInCurrentTransaction
@Deprecated(since="26.4", forRemoval=true) public void reloadEntityInCurrentTransaction(RealmModel realm, K key, SessionEntityWrapper<V> entity) Deprecated, for removal: This API element is subject to removal in a future version. -
get
-
asyncCommit
public void asyncCommit(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage, Consumer<DatabaseUpdate> databaseUpdates) Description copied from interface:NonBlockingTransactionAsynchronously commits the transaction.The implementation should not block the thread and add any (or none)
CompletionStageinto thestage.Any blocking operation should be consumed by the
databaseUpdates. It will be executed at a later instant.- Specified by:
asyncCommitin interfaceNonBlockingTransaction- Parameters:
stage- TheAggregateCompletionStageto collect theCompletionStage.databaseUpdates- TheConsumerto use for blocking/database updates.
-
asyncRollback
public void asyncRollback(org.infinispan.commons.util.concurrent.AggregateCompletionStage<Void> stage) Description copied from interface:NonBlockingTransactionAsynchronously rollbacks the transaction.The implementation should not block the thread and add any (or none)
CompletionStageinto thestage.- Specified by:
asyncRollbackin interfaceNonBlockingTransaction- Parameters:
stage- TheAggregateCompletionStageto collect theCompletionStage.
-
getCache
- Returns:
- The
Cachebacking up this transaction.
-
generateKey
-
importSession
public V importSession(RealmModel realmModel, K key, SessionEntityWrapper<V> session, 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 thesessioncan be used by the transaction.This transaction will keep track of further changes in the session.
- Parameters:
realmModel- TheRealmModelwhere 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.- Returns:
- The existing cached session. If it returns
null, it means thesessionused in the parameters was cached.
-
importSessionsConcurrently
public void importSessionsConcurrently(RealmModel realmModel, Map<K, SessionEntityWrapper<V>> sessions, SessionFunction<V> lifespanFunction, SessionFunction<V> maxIdleFunction) Imports multiple sessions from an external source into theCache.If the
lifespanFunctionormaxIdleFunctionreturnsSessionTimeouts.ENTRY_EXPIRED_FLAG, the session is considered expired and not stored in the cache.Also, if one or more sessions already exist in the
Cache, it will not be imported.This transaction will keep track of further changes in the sessions.
- Parameters:
realmModel- TheRealmModelwhere the sessions belong to.sessions- TheMapwith the cache's key/session mapping to be imported.lifespanFunction- TheFunctionto compute the lifespan of the session. It defines how long the session should be stored in the cache until it is removed.maxIdleFunction- TheFunctionto compute the max-idle of the session. It defines how long the session will be idle before it is removed.
-