[keycloak-user] Cannot use Keycloak with Postgres DB

Marek Posolda mposolda at redhat.com
Mon Dec 14 11:15:51 EST 2015


There is missing declaration of userSessionPersister in the 
keycloak-server.json file. I bet that if you add this:

"userSessionPersister": {
     "provider": "jpa"
},

to the file 
https://github.com/jboss-dockerfiles/keycloak/blob/master/server-ha-postgres/keycloak-server.json, 
the things will start to work.

Will be cool if you could doublecheck and possibly send PR if it helps :-)

The even more proper solution will be to avoid having 
keycloak-server.json in the docker image, as the file becomes outdated 
during each update in Keycloak. Docker image should have some script or 
something to edit the existing file "on the fly" and update it to use 
cluster.
Actually not sure if separate keycloak-server.json is still needed as in 
latest Keycloak, keycloak-server.json already contains configuration for 
connections-infinispan (which it wasn't before AFAIK)

Marek

On 14/12/15 11:52, Thomas Darimont wrote:
> Starting the Keycloak Postgres HA Docker Image fails due to a problem 
> with loading OffilineUserSessions - see stacktrace below.
>
> There is an already resolved?! issue 
> https://issues.jboss.org/browse/KEYCLOAK-1999 filed for Keycloak 1.6.0 
> that shows some
> workaround suggestions, but I think disabling the support for offline 
> sessions is not a fix to the actual problem...
>
> Would be great to have a real fix, since this hinders the Keycloak 
> Server to start.
>
> Just verified this with:
> - jboss/keycloak-ha-postgres:latest
> - jboss/keycloak-ha-postgres:1.7.0.Release
> - jboss/keycloak-ha-postgres:1.6.1.Release
> - jboss/keycloak-ha-postgres:1.6.0.Release
>
> Steps to reproduce:
>
> # Start Postgres Instance:
> docker run --name kc-db -e POSTGRES_DATABASE=keycloak -e 
> POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password -e 
> POSTGRES_ROOT_PASSWORD=password -p 25432:5432 -d postgres
>
> # Start KC Server
> docker run --name kc-server1 --link kc-db:postgres -e 
> POSTGRES_DATABASE=keycloak -e POSTGRES_USER=keycloak -e 
> POSTGRES_PASSWORD=password -p 8101:8080 jboss/keycloak-ha-postgres
>
> #Exception during start:
> ...
> 10:33:54,461 INFO  [org.jboss.as.clustering.infinispan] (ServerService 
> Thread Pool -- 62) WFLYCLINF0002: Started offlineSessions cache from 
> keycloak container
> 10:33:54,472 ERROR [org.jboss.msc.service.fail] (ServerService Thread 
> Pool -- 62) MSC000001: Failed to start service 
> jboss.undertow.deployment.default-server.default-host./auth: 
> org.jboss.msc.service.StartException in service 
> jboss.undertow.deployment.default-server.default-host./auth: 
> java.lang.RuntimeException: Failed to construct public 
> org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> at org.jboss.threads.JBossThread.run(JBossThread.java:320)
> Caused by: java.lang.RuntimeException: Failed to construct public 
> org.keycloak.services.resources.KeycloakApplication(javax.servlet.ServletContext,org.jboss.resteasy.core.Dispatcher)
> at 
> org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:160)
> at 
> org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2211)
> at 
> org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:295)
> at 
> org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:236)
> at 
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:112)
> at 
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)
> at 
> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
> at 
> org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
> at 
> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
> at 
> io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:230)
> at 
> io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:131)
> at 
> io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:511)
> at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101)
> at 
> org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
> ... 6 more
> Caused by: java.lang.NullPointerException
> at 
> org.keycloak.models.sessions.infinispan.initializer.OfflineUserSessionLoader.init(OfflineUserSessionLoader.java:25)
> at 
> org.keycloak.models.sessions.infinispan.initializer.InfinispanUserSessionInitializer$1.run(InfinispanUserSessionInitializer.java:100)
> at 
> org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:244)
> at 
> org.keycloak.models.sessions.infinispan.initializer.InfinispanUserSessionInitializer.getOrCreateInitializerState(InfinispanUserSessionInitializer.java:97)
> at 
> org.keycloak.models.sessions.infinispan.initializer.InfinispanUserSessionInitializer.startLoading(InfinispanUserSessionInitializer.java:148)
> at 
> org.keycloak.models.sessions.infinispan.initializer.InfinispanUserSessionInitializer.loadPersistentSessions(InfinispanUserSessionInitializer.java:78)
> at 
> org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$3.run(InfinispanUserSessionProviderFactory.java:111)
> at 
> org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:244)
> at 
> org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory.loadPersistentSessions(InfinispanUserSessionProviderFactory.java:102)
> at 
> org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$2.onEvent(InfinispanUserSessionProviderFactory.java:86)
> at 
> org.keycloak.services.DefaultKeycloakSessionFactory.publish(DefaultKeycloakSessionFactory.java:47)
> at 
> org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:87)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> at 
> org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:148)
> ... 19 more
>
> 10:33:54,516 ERROR [org.jboss.as.controller.management-operation] 
> (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - 
> address: ([("deployment" => "keycloak-server.war")]) -
>
>
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-user/attachments/20151214/24c63ae7/attachment-0001.html 


More information about the keycloak-user mailing list