[keycloak-user] Cannot use Keycloak with Postgres DB

Marko Strukelj mstrukel at redhat.com
Mon Dec 14 16:09:57 EST 2015


Yeah, we have to fix server-ha-postgres. Overriding keycloak-server.json
has probably become redundant.
On Dec 14, 2015 5:18 PM, "Marek Posolda" <mposolda at redhat.com> wrote:

> 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 listkeycloak-user at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/keycloak-user
>
>
>
> _______________________________________________
> 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/e4963cec/attachment.html 


More information about the keycloak-user mailing list