Uploaded image for project: 'Red Hat build of Keycloak'
  1. Red Hat build of Keycloak
  2. RHBK-2580

Database migration fails after upgrading operator to v26.0.6 [GHI#35290]

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False

      Before reporting an issue

      [X] I have read and understood the above terms for submitting issues, and I understand that my issue may be closed without action if I do not follow them.

      Area

      core

      Describe the bug

      ```console
      2024-11-25 14:13:13,549 ERROR [liquibase.changelog.ChangeSet] (main) ChangeSet META-INF/jpa-changelog-26.0.6.xml::26.0.6-34013::keycloak encountered an exception.: liquibase.exception.DatabaseException: ERROR: column "details_json" of relation "admin_event_entity" already exists [Failed SQL: (0) ALTER TABLE public.ADMIN_EVENT_ENTITY ADD DETAILS_JSON TEXT]
      at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:476)
      at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:83)
      at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:185)
      at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:141)
      at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1189)
      at liquibase.changelog.ChangeSet.execute(ChangeSet.java:775)
      at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:119)
      at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:68)
      at liquibase.changelog.ChangeLogIterator.lambda$run$0(ChangeLogIterator.java:131)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.changelog.ChangeLogIterator.lambda$run$1(ChangeLogIterator.java:120)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.Scope.child(Scope.java:257)
      at liquibase.Scope.child(Scope.java:261)
      at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:89)
      at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:113)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:111)
      at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:105)
      at liquibase.command.CommandScope.execute(CommandScope.java:220)
      at liquibase.Liquibase.lambda$update$0(Liquibase.java:216)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.Liquibase.runInScope(Liquibase.java:1290)
      at liquibase.Liquibase.update(Liquibase.java:205)
      at liquibase.Liquibase.update(Liquibase.java:188)
      at liquibase.Liquibase.update(Liquibase.java:175)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.updateChangeSet(QuarkusJpaUpdaterProvider.java:191)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.update(QuarkusJpaUpdaterProvider.java:106)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.update(QuarkusJpaUpdaterProvider.java:84)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.update(QuarkusJpaConnectionProviderFactory.java:281)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.createOrUpdateSchema(QuarkusJpaConnectionProviderFactory.java:263)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.postInit(QuarkusJpaConnectionProviderFactory.java:124)
      at org.keycloak.quarkus.runtime.integration.QuarkusKeycloakSessionFactory.init(QuarkusKeycloakSessionFactory.java:105)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.createSessionFactory(QuarkusKeycloakApplication.java:67)
      at org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:90)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.onStartupEvent(QuarkusKeycloakApplication.java:52)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication_Observer_onStartupEvent_GNZ8m5QenZ9h9VNelo7awjUZFDE.notify(Unknown Source)
      at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)
      at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)
      at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:80)
      at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:156)
      at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:107)
      at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
      at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
      at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
      at io.quarkus.runtime.Application.start(Application.java:101)
      at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:119)
      at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
      at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:146)
      at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:57)
      at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
      at picocli.CommandLine.access$1500(CommandLine.java:148)
      at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
      at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
      at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
      at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
      at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
      at picocli.CommandLine.execute(CommandLine.java:2174)
      at org.keycloak.quarkus.runtime.cli.Picocli.run(Picocli.java:147)
      at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:135)
      at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:106)
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
      at java.base/java.lang.reflect.Method.invoke(Method.java:580)
      at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:62)
      at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:33)
      Caused by: org.postgresql.util.PSQLException: ERROR: column "details_json" of relation "admin_event_entity" already exists
      at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733)
      at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420)
      at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)
      at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356)
      at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:312)
      at io.agroal.pool.wrapper.StatementWrapper.execute(StatementWrapper.java:220)
      at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:470)
      ... 76 more

      UPDATE SUMMARY
      Run: 0
      Previously run: 144
      Filtered out: 0
      -------------------------------
      Total change sets: 145

      2024-11-25 14:13:13,577 WARN [io.agroal.pool] (main) Datasource '<default>': JDBC resources leaked: 3 ResultSet(s) and 0 Statement(s)
      2024-11-25 14:13:13,578 WARN [io.agroal.pool] (main) Datasource '<default>': JDBC resources leaked: 8 ResultSet(s) and 0 Statement(s)
      2024-11-25 14:13:13,602 INFO [org.infinispan.CLUSTER] (main) ISPN000080: Disconnecting JGroups channel `ISPN`
      2024-11-25 14:13:13,623 INFO [com.arjuna.ats.jbossatx] (main) ARJUNA032014: Stopping transaction recovery manager
      2024-11-25 14:13:13,668 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) ERROR: Failed to start server in (production) mode
      2024-11-25 14:13:13,668 ERROR [org.keycloak.quarkus.runtime.cli.ExecutionExceptionHandler] (main) Error details:: java.lang.RuntimeException: Failed to update database
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.update(QuarkusJpaUpdaterProvider.java:121)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.update(QuarkusJpaUpdaterProvider.java:84)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.update(QuarkusJpaConnectionProviderFactory.java:281)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.createOrUpdateSchema(QuarkusJpaConnectionProviderFactory.java:263)
      at org.keycloak.quarkus.runtime.storage.database.jpa.QuarkusJpaConnectionProviderFactory.postInit(QuarkusJpaConnectionProviderFactory.java:124)
      at org.keycloak.quarkus.runtime.integration.QuarkusKeycloakSessionFactory.init(QuarkusKeycloakSessionFactory.java:105)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.createSessionFactory(QuarkusKeycloakApplication.java:67)
      at org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:90)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication.onStartupEvent(QuarkusKeycloakApplication.java:52)
      at org.keycloak.quarkus.runtime.integration.jaxrs.QuarkusKeycloakApplication_Observer_onStartupEvent_GNZ8m5QenZ9h9VNelo7awjUZFDE.notify(Unknown Source)
      at io.quarkus.arc.impl.EventImpl$Notifier.notifyObservers(EventImpl.java:351)
      at io.quarkus.arc.impl.EventImpl$Notifier.notify(EventImpl.java:333)
      at io.quarkus.arc.impl.EventImpl.fire(EventImpl.java:80)
      at io.quarkus.arc.runtime.ArcRecorder.fireLifecycleEvent(ArcRecorder.java:156)
      at io.quarkus.arc.runtime.ArcRecorder.handleLifecycleEvents(ArcRecorder.java:107)
      at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy_0(Unknown Source)
      at io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent1144526294.deploy(Unknown Source)
      at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
      at io.quarkus.runtime.Application.start(Application.java:101)
      at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:119)
      at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
      at org.keycloak.quarkus.runtime.KeycloakMain.start(KeycloakMain.java:146)
      at org.keycloak.quarkus.runtime.cli.command.AbstractStartCommand.run(AbstractStartCommand.java:57)
      at picocli.CommandLine.executeUserObject(CommandLine.java:2030)
      at picocli.CommandLine.access$1500(CommandLine.java:148)
      at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
      at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
      at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
      at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
      at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
      at picocli.CommandLine.execute(CommandLine.java:2174)
      at org.keycloak.quarkus.runtime.cli.Picocli.run(Picocli.java:147)
      at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:135)
      at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:106)
      at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
      at java.base/java.lang.reflect.Method.invoke(Method.java:580)
      at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:62)
      at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:33)
      Caused by: liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset META-INF/jpa-changelog-26.0.6.xml::26.0.6-34013::keycloak:

       Reason: liquibase.exception.DatabaseException: ERROR: column "details_json" of relation "admin_event_entity" already exists [Failed SQL: (0) ALTER TABLE public.ADMIN_EVENT_ENTITY ADD DETAILS_JSON TEXT]
      

      at liquibase.command.CommandScope.execute(CommandScope.java:258)
      at liquibase.Liquibase.lambda$update$0(Liquibase.java:216)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.Liquibase.runInScope(Liquibase.java:1290)
      at liquibase.Liquibase.update(Liquibase.java:205)
      at liquibase.Liquibase.update(Liquibase.java:188)
      at liquibase.Liquibase.update(Liquibase.java:175)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.updateChangeSet(QuarkusJpaUpdaterProvider.java:191)
      at org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider.update(QuarkusJpaUpdaterProvider.java:106)
      ... 37 more
      Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset META-INF/jpa-changelog-26.0.6.xml::26.0.6-34013::keycloak:

       Reason: liquibase.exception.DatabaseException: ERROR: column "details_json" of relation "admin_event_entity" already exists [Failed SQL: (0) ALTER TABLE public.ADMIN_EVENT_ENTITY ADD DETAILS_JSON TEXT]
      

      at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:148)
      at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:113)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:111)
      at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:105)
      at liquibase.command.CommandScope.execute(CommandScope.java:220)
      ... 48 more
      Caused by: liquibase.exception.MigrationFailedException: Migration failed for changeset META-INF/jpa-changelog-26.0.6.xml::26.0.6-34013::keycloak:

       Reason: liquibase.exception.DatabaseException: ERROR: column "details_json" of relation "admin_event_entity" already exists [Failed SQL: (0) ALTER TABLE public.ADMIN_EVENT_ENTITY ADD DETAILS_JSON TEXT]
      

      at liquibase.changelog.ChangeSet.execute(ChangeSet.java:819)
      at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:119)
      at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:68)
      at liquibase.changelog.ChangeLogIterator.lambda$run$0(ChangeLogIterator.java:131)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.changelog.ChangeLogIterator.lambda$run$1(ChangeLogIterator.java:120)
      at liquibase.Scope.lambda$child$0(Scope.java:191)
      at liquibase.Scope.child(Scope.java:200)
      at liquibase.Scope.child(Scope.java:190)
      at liquibase.Scope.child(Scope.java:169)
      at liquibase.Scope.child(Scope.java:257)
      at liquibase.Scope.child(Scope.java:261)
      at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:89)
      ... 56 more
      Caused by: liquibase.exception.DatabaseException: ERROR: column "details_json" of relation "admin_event_entity" already exists [Failed SQL: (0) ALTER TABLE public.ADMIN_EVENT_ENTITY ADD DETAILS_JSON TEXT]
      at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:476)
      at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:83)
      at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:185)
      at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:141)
      at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1189)
      at liquibase.changelog.ChangeSet.execute(ChangeSet.java:775)
      ... 71 more
      Caused by: org.postgresql.util.PSQLException: ERROR: column "details_json" of relation "admin_event_entity" already exists
      at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733)
      at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420)
      at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372)
      at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356)
      at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341)
      at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317)
      at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:312)
      at io.agroal.pool.wrapper.StatementWrapper.execute(StatementWrapper.java:220)
      at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:470)
      ... 76 more
      ```

      Version

      26.0.6

      Regression

      [X] The issue is a regression

      Expected behavior

      Database migration should not fail

      Actual behavior

      Database migration is failing. The Keycloak instance is completely broken.

      How to Reproduce?

      Upgrade operator from v26.0.0 to v26.0.6

      Anything else?

      No response

              Unassigned Unassigned
              pvlha Pavel Vlha
              Keycloak Core (shared)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: