diff --git a/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/connections/DefaultHotRodConnectionProviderFactory.java b/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/connections/DefaultHotRodConnectionProviderFactory.java index 2ebcff816ff..787fc3e017e 100644 --- a/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/connections/DefaultHotRodConnectionProviderFactory.java +++ b/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/connections/DefaultHotRodConnectionProviderFactory.java @@ -16,7 +16,6 @@ */ package org.keycloak.models.map.storage.hotRod.connections; -import org.infinispan.client.hotrod.Flag; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; import org.infinispan.client.hotrod.RemoteCacheManagerAdmin; @@ -29,7 +28,6 @@ import org.infinispan.query.remote.client.ProtobufMetadataManagerConstants; import org.jboss.logging.Logger; import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSessionFactory; -import org.keycloak.models.locking.LockAcquiringTimeoutException; import org.keycloak.models.map.storage.hotRod.locking.HotRodLocksUtils; import org.keycloak.models.map.storage.hotRod.common.HotRodEntityDescriptor; import org.keycloak.models.map.storage.hotRod.common.CommonPrimitivesProtoSchemaInitializer; @@ -155,8 +153,6 @@ public class DefaultHotRodConnectionProviderFactory implements HotRodConnectionP } LOG.infof("HotRod client configuration was successful."); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException(e); } finally { if (!HotRodLocksUtils.removeWithInstanceIdentifier(locksCache, HOT_ROD_INIT_LOCK_NAME)) { throw new RuntimeException("Cannot release HotRod init lock"); diff --git a/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/locking/HotRodGlobalLockProvider.java b/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/locking/HotRodGlobalLockProvider.java index df6638c6498..4994e943f3f 100644 --- a/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/locking/HotRodGlobalLockProvider.java +++ b/model/map-hot-rod/src/main/java/org/keycloak/models/map/storage/hotRod/locking/HotRodGlobalLockProvider.java @@ -17,7 +17,6 @@ package org.keycloak.models.map.storage.hotRod.locking; -import org.infinispan.client.hotrod.Flag; import org.infinispan.client.hotrod.RemoteCache; import org.jboss.logging.Logger; import org.keycloak.models.KeycloakSession; diff --git a/model/map-jpa/src/main/java/org/keycloak/models/map/storage/jpa/JpaMapStorageProviderFactory.java b/model/map-jpa/src/main/java/org/keycloak/models/map/storage/jpa/JpaMapStorageProviderFactory.java index 858c0389ae4..d82e12d9b29 100644 --- a/model/map-jpa/src/main/java/org/keycloak/models/map/storage/jpa/JpaMapStorageProviderFactory.java +++ b/model/map-jpa/src/main/java/org/keycloak/models/map/storage/jpa/JpaMapStorageProviderFactory.java @@ -76,7 +76,6 @@ import org.keycloak.models.UserLoginFailureModel; import org.keycloak.models.UserModel; import org.keycloak.models.UserSessionModel; import org.keycloak.models.locking.GlobalLockProvider; -import org.keycloak.models.locking.LockAcquiringTimeoutException; import org.keycloak.models.map.client.MapProtocolMapperEntity; import org.keycloak.models.map.client.MapProtocolMapperEntityImpl; import org.keycloak.models.map.common.DeepCloner; @@ -516,13 +515,9 @@ public class JpaMapStorageProviderFactory implements } private void update(Class modelType, Connection connection, KeycloakSession session) { - try { - session.getProvider(GlobalLockProvider.class).withLock(modelType.getName(), lockedSession -> { - lockedSession.getProvider(MapJpaUpdaterProvider.class).update(modelType, connection, config.get("schema")); - return null; - }); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException("Acquiring " + modelType.getName() + " failed.", e); - } + session.getProvider(GlobalLockProvider.class).withLock(modelType.getName(), lockedSession -> { + lockedSession.getProvider(MapJpaUpdaterProvider.class).update(modelType, connection, config.get("schema")); + return null; + }); } } diff --git a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/storage/legacy/database/LegacyJpaConnectionProviderFactory.java b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/storage/legacy/database/LegacyJpaConnectionProviderFactory.java index 71703e59694..396cd76d09c 100644 --- a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/storage/legacy/database/LegacyJpaConnectionProviderFactory.java +++ b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/storage/legacy/database/LegacyJpaConnectionProviderFactory.java @@ -52,7 +52,6 @@ import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSessionFactory; import org.keycloak.models.dblock.DBLockGlobalLockProvider; import org.keycloak.models.locking.GlobalLockProvider; -import org.keycloak.models.locking.LockAcquiringTimeoutException; import org.keycloak.provider.EnvironmentDependentProviderFactory; import org.keycloak.provider.ProviderConfigProperty; import org.keycloak.provider.ProviderConfigurationBuilder; @@ -290,27 +289,19 @@ public class LegacyJpaConnectionProviderFactory extends AbstractJpaConnectionPro private void update(Connection connection, String schema, KeycloakSession session, JpaUpdaterProvider updater) { GlobalLockProvider globalLock = session.getProvider(GlobalLockProvider.class); - try { - globalLock.withLock(DBLockGlobalLockProvider.DATABASE, innerSession -> { - updater.update(connection, schema); - return null; - }); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException("Acquiring database failed.", e); - } + globalLock.withLock(DBLockGlobalLockProvider.DATABASE, innerSession -> { + updater.update(connection, schema); + return null; + }); } private void export(Connection connection, String schema, File databaseUpdateFile, KeycloakSession session, JpaUpdaterProvider updater) { GlobalLockProvider globalLock = session.getProvider(GlobalLockProvider.class); - try { - globalLock.withLock(DBLockGlobalLockProvider.DATABASE, innerSession -> { - updater.export(connection, schema, databaseUpdateFile); - return null; - }); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException("Acquiring database failed.", e); - } + globalLock.withLock(DBLockGlobalLockProvider.DATABASE, innerSession -> { + updater.export(connection, schema, databaseUpdateFile); + return null; + }); } @Override diff --git a/server-spi-private/src/main/java/org/keycloak/models/locking/LockAcquiringTimeoutException.java b/server-spi-private/src/main/java/org/keycloak/models/locking/LockAcquiringTimeoutException.java index 6e4402ea318..1f7ef7db26d 100644 --- a/server-spi-private/src/main/java/org/keycloak/models/locking/LockAcquiringTimeoutException.java +++ b/server-spi-private/src/main/java/org/keycloak/models/locking/LockAcquiringTimeoutException.java @@ -22,9 +22,7 @@ import java.time.Instant; /** * This exception is thrown when acquiring a lock times out. */ -public final class LockAcquiringTimeoutException extends Exception { - - private LockAcquiringTimeoutException() {} +public final class LockAcquiringTimeoutException extends RuntimeException { /** * diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java index 0ca2b29c688..f27d683d0e3 100644 --- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java +++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java @@ -33,7 +33,6 @@ import org.keycloak.models.RealmModel; import org.keycloak.models.UserModel; import org.keycloak.models.UserProvider; import org.keycloak.models.locking.GlobalLockProvider; -import org.keycloak.models.locking.LockAcquiringTimeoutException; import org.keycloak.models.utils.KeycloakModelUtils; import org.keycloak.models.utils.PostMigrationEvent; import org.keycloak.models.utils.RepresentationToModel; @@ -143,11 +142,7 @@ public class KeycloakApplication extends Application { @Override public void run(KeycloakSession session) { GlobalLockProvider locks = session.getProvider(GlobalLockProvider.class); - try { - exportImportManager[0] = locks.withLock(GlobalLockProvider.Constants.KEYCLOAK_BOOT, innerSession -> bootstrap()); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException("Acquiring keycloak-boot lock failed.", e); - } + exportImportManager[0] = locks.withLock(GlobalLockProvider.Constants.KEYCLOAK_BOOT, innerSession -> bootstrap()); } }); diff --git a/testsuite/model/src/test/java/org/keycloak/testsuite/model/globalLock/GlobalLocksTest.java b/testsuite/model/src/test/java/org/keycloak/testsuite/model/globalLock/GlobalLocksTest.java index 9dfc1c36054..25b82c1fd76 100644 --- a/testsuite/model/src/test/java/org/keycloak/testsuite/model/globalLock/GlobalLocksTest.java +++ b/testsuite/model/src/test/java/org/keycloak/testsuite/model/globalLock/GlobalLocksTest.java @@ -67,26 +67,22 @@ public class GlobalLocksTest extends KeycloakModelTest { GlobalLockProvider lockProvider = s.getProvider(GlobalLockProvider.class); LOG.infof("Iteration %d entered session", index); - try { - lockProvider.withLock(LOCK_NAME, Duration.ofSeconds(60), innerSession -> { - LOG.infof("Iteration %d entered locked block", index); + lockProvider.withLock(LOCK_NAME, Duration.ofSeconds(60), innerSession -> { + LOG.infof("Iteration %d entered locked block", index); - // Locked block - int c = counter.getAndIncrement(); + // Locked block + int c = counter.getAndIncrement(); - try { - Thread.sleep(rand.nextInt(100)); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException(e); - } + try { + Thread.sleep(rand.nextInt(100)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException(e); + } - resultingList.add(c); - return null; - }); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException(e); - } + resultingList.add(c); + return null; + }); })); assertThat(resultingList, hasSize(numIterations)); @@ -145,20 +141,16 @@ public class GlobalLocksTest extends KeycloakModelTest { .forEach(i -> inComittedTransaction(s -> { GlobalLockProvider lockProvider = s.getProvider(GlobalLockProvider.class); - try { - lockProvider.withLock("LOCK_" + i, session -> { - locksAcquired.countDown(); - try { - testFinished.await(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException(e); - } - return null; - }); - } catch (LockAcquiringTimeoutException e) { - throw new RuntimeException(e); - } + lockProvider.withLock("LOCK_" + i, session -> { + locksAcquired.countDown(); + try { + testFinished.await(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException(e); + } + return null; + }); }) ); });