keycloak
公開メンバ関数 | 限定公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer クラス
org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer の継承関係図
Inheritance graph
org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer 連携図
Collaboration graph

公開メンバ関数

 DBLockBasedCacheInitializer (KeycloakSession session, CacheInitializer delegate)
 
void initCache ()
 
void loadSessions ()
 

限定公開メンバ関数

boolean isFinished ()
 
boolean isCoordinator ()
 
void startLoading ()
 

非公開変数類

final KeycloakSession session
 
final CacheInitializer delegate
 

静的非公開変数類

static final Logger log = Logger.getLogger(DBLockBasedCacheInitializer.class)
 

詳解

Encapsulates preloading of sessions within the DB Lock. This DB-aware lock ensures that "startLoading" is done on single DC and the other DCs need to wait.

著者
Marek Posolda

構築子と解体子

◆ DBLockBasedCacheInitializer()

org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.DBLockBasedCacheInitializer ( KeycloakSession  session,
CacheInitializer  delegate 
)
inline
37  {
38  this.session = session;
39  this.delegate = delegate;
40  }
final CacheInitializer delegate
Definition: DBLockBasedCacheInitializer.java:35
final KeycloakSession session
Definition: DBLockBasedCacheInitializer.java:34

関数詳解

◆ initCache()

void org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.initCache ( )
inline
44  {
46  }
final CacheInitializer delegate
Definition: DBLockBasedCacheInitializer.java:35
void initCache()
Definition: CacheInitializer.java:29

◆ isCoordinator()

boolean org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.isCoordinator ( )
inlineprotected
56  {
57  return delegate.isCoordinator();
58  }
final CacheInitializer delegate
Definition: DBLockBasedCacheInitializer.java:35

◆ isFinished()

boolean org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.isFinished ( )
inlineprotected
50  {
51  return delegate.isFinished();
52  }
final CacheInitializer delegate
Definition: DBLockBasedCacheInitializer.java:35

◆ loadSessions()

void org.keycloak.models.sessions.infinispan.initializer.CacheInitializer.loadSessions ( )
inlineinherited
32  {
33  while (!isFinished()) {
34  if (!isCoordinator()) {
35  try {
36  Thread.sleep(1000);
37  } catch (InterruptedException ie) {
38  log.error("Interrupted", ie);
39  }
40  } else {
41  startLoading();
42  }
43  }
44  }
static final Logger log
Definition: CacheInitializer.java:27

◆ startLoading()

void org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.startLoading ( )
inlineprotected

Just coordinator will run this. And there is DB-lock, so the delegate.startLoading() will be permitted just by the single DC

65  {
66  DBLockManager dbLockManager = new DBLockManager(session);
67  dbLockManager.checkForcedUnlock();
68  DBLockProvider dbLock = dbLockManager.getDBLock();
69  dbLock.waitForLock();
70  try {
71 
72  if (isFinished()) {
73  log.infof("Task already finished when DBLock retrieved");
74  } else {
76  }
77  } finally {
78  dbLock.releaseLock();
79  }
80  }
static final Logger log
Definition: DBLockBasedCacheInitializer.java:32
final CacheInitializer delegate
Definition: DBLockBasedCacheInitializer.java:35
final KeycloakSession session
Definition: DBLockBasedCacheInitializer.java:34
boolean isFinished()
Definition: DBLockBasedCacheInitializer.java:50

メンバ詳解

◆ delegate

final CacheInitializer org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.delegate
private

◆ log

final Logger org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.log = Logger.getLogger(DBLockBasedCacheInitializer.class)
staticprivate

◆ session

final KeycloakSession org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.session
private

このクラス詳解は次のファイルから抽出されました: