updater.update(session, connection, schema); } else { logger.debug("Database is up to date");
protected void update(Connection connection, String schema, KeycloakSession session, JpaUpdaterProvider updater) { DBLockProvider dbLock = new DBLockManager(session).getDBLock(); if (dbLock.hasLock()) { updater.update(connection, schema); } else { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), new KeycloakSessionTask() { @Override public void run(KeycloakSession lockSession) { DBLockManager dbLockManager = new DBLockManager(lockSession); DBLockProvider dbLock2 = dbLockManager.getDBLock(); dbLock2.waitForLock(); try { updater.update(connection, schema); } finally { dbLock2.releaseLock(); } } }); } }