[keycloak-user] Upgrade from 1.1.0.Final to 1.4.0.Final - Liquibase script failing
Stephen Flynn
stephen.flynn at jftechnology.com
Mon Aug 3 12:22:01 EDT 2015
Hi Marek,
I ran the upgrades incrementally (1.1.0.Final to 1.2.0.Final, 1.2.0.Final to
1.3.1.Final,etc) and fixed both issues in the 1.2.0.Final source after which
everything ran smoothly.
So I can't say that I'm 100% sure that a single upgrade from 1.1.0.Final to
1.4.0.Final would work if you fixed the BigDecimal issue in the 1.4.0.Final
source - but, without trying it out, I would be very surprised if it didn't work
fine (assuming the second issue is fixed already).
BTW - both issues will also break upgradesfrom 1.1.0.Final to 1.2.0.Final and
1.3.1.Final (against Oracle) and, though I haven't explicitly tested it, I would
very surprised if the second issue doesn't break fresh installs of1.2.0.Final
and 1.3.1.Final as well.
best rgds,
Steve F.
===================================================
*Stephen Flynn*
*Director, JF Technology (UK) Ltd*
Cell (UK) : +44 7768 003 882
Phone : +44 20 7833 8346
IM : xmpp:stephen.flynn at jftechnology.com
IM : aim:stephen.flynn at jftechnology.com
Website : http://www.jftechnology.com
Tech support : support at jftechnology.com <mailto:support at jftechnology.com>
===================================================
On 03/08/2015 16:58, Marek Posolda wrote:
> The second issue is already fixed in latest Keycloak master and in 1.4.0.Final
> sources. That leaves just the BigDecimal issue. So if you fix just the
> BigDecimal issue in JpaUpdate1_2_0_Beta1.java in 1.4 sources, are you able to
> upgrade from 1.1.0.Final to 1.4.0.Final ?
>
> Thanks,
> Marek
>
> On 3.8.2015 17:42, Stephen Flynn wrote:
>>
>> In case this helps...
>>
>> I had a quick peek at the source - there were two issues that made Oracle
>> choke in my environment. First the BigDecimal issue in the custom change
>> JpaUpdate1_2_0_Beta1.java as initially reported. Secondly in the custom
>> change JpaUpdate1_2_0_CR1.java there was a prepared statement that Oracle 10
>> doesn't like as it expects a boolean 'TRUE' to be represented by the
>> numerical value '1'.
>>
>> I hacked the following two lines and that appears to fix the upgrade to
>> 1.2.0.Final (for Oracle10 at least). The remaining liquibase scripts then ran
>> without issue.
>>
>> best rgds,
>>
>> Steve F.
>>
>>
>>
>> diff --git
>> a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_Beta1.javab/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_Beta1.java
>> index 89e7885..895a785 100644
>> ---
>> a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_Beta1.java
>> +++
>> b/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_Beta1.java
>> @@ -293,7 +293,7 @@
>> }
>>
>> Object acmObj = resultSet.getObject("ALLOWED_CLAIMS_MASK");
>> - long mask = (acmObj != null) ? (Long) acmObj :
>> ClaimMask.ALL;
>> + long mask = (acmObj != null) ? ((Number)
>> acmObj).longValue() : ClaimMask.ALL;
>>
>> MigrationProvider migrationProvider =
>> this.kcSession.getProvider(MigrationProvider.class);
>> List<ProtocolMapperRepresentation> protocolMappers =
>> migrationProvider.getMappersForClaimMask(mask);
>>
>>
>> diff --git
>> a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_CR1.javab/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_CR1.java
>> index 5c8a2eb..dbeedf7 100644
>> ---
>> a/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_CR1.java
>> +++
>> b/connections/jpa-liquibase/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/JpaUpdate1_2_0_CR1.java
>> @@ -17,7 +17,7 @@
>> String realmClientTableName =
>> database.correctObjectName("REALM_CLIENT", Table.class);
>>
>> try {
>> - PreparedStatement statement =
>> jdbcConnection.prepareStatement("select CLIENT.REALM_ID, CLIENT.ID CLIENT_ID
>> from CLIENT where CLIENT.CONSENT_REQUIRED = true");
>> + PreparedStatement statement =
>> jdbcConnection.prepareStatement("select CLIENT.REALM_ID, CLIENT.ID CLIENT_ID
>> from CLIENT where CLIENT.CONSENT_REQUIRED = 1");
>> try {
>> ResultSet resultSet = statement.executeQuery();
>> try {
>>
>>
>> ===================================================
>>
>> *Stephen Flynn*
>>
>> *Director, JF Technology (UK) Ltd*
>>
>> Cell (UK) : +44 7768 003 882
>> Phone : +44 20 7833 8346
>> IM : xmpp:stephen.flynn at jftechnology.com
>> IM : aim:stephen.flynn at jftechnology.com
>> Website : http://www.jftechnology.com
>> Tech support : support at jftechnology.com <mailto:support at jftechnology.com>
>>
>> ===================================================
>>
>> On 03/08/2015 15:53, Bill Burke wrote:
>>> I could do a 1.4.1 when you fix it.
>>>
>>> On 8/3/2015 10:51 AM, Marek Posolda wrote:
>>>> Thanks for the detailed report. I've created JIRA for this and will be
>>>> fixed for next release https://issues.jboss.org/browse/KEYCLOAK-1725 .
>>>>
>>>> Marek
>>>>
>>>> On 2.8.2015 15:11, Bill Burke wrote:
>>>>> You probably have to export your database to json and re-import it until
>>>>> we track this down.
>>>>>
>>>>> On 8/1/2015 11:19 AM, Stephen Flynn wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> I'm trying to upgrade Keycloak from 1.1.0.Final to 1.4.0.Final.
>>>>>>
>>>>>> The liquibase db scripts are failing. The particular script that is
>>>>>> failing is 'jpa-changelog-1.2.0.Beta1.xml' with the exception 'Caused
>>>>>> by: java.lang.ClassCastException: java.math.BigDecimal cannot be cast to
>>>>>> java.lang.Long'. More stack trace below.
>>>>>>
>>>>>> Any ideas as to why this might be happening ? Is there anything else I
>>>>>> can provide to give more insight ?
>>>>>>
>>>>>> best rgds,
>>>>>>
>>>>>> Steve F.
>>>>>>
>>>>>>
>>>>>> Environment is...
>>>>>>
>>>>>> * wildfly-9.0.1.Final + keycloak-overlay-1.4.0.Final
>>>>>> * jdk1.7.0_51
>>>>>> * Oracle 10 + odbcj6.jar (11.2.0.2.0)
>>>>>>
>>>>>>
>>>>>> Liquibase change log from the DB
>>>>>>
>>>>>> * 1.0.0.Final sthorger at redhat.com
>>>>>> META-INF/jpa-changelog-1.0.0.Final.xml 2014-12-04
>>>>>> 00:55:28.95072 1 EXECUTED
>>>>>> * 1.1.0.Beta1 sthorger at redhat.com
>>>>>> META-INF/jpa-changelog-1.1.0.Beta1.xml 2014-12-04
>>>>>> 00:55:30.070692 2 EXECUTED
>>>>>> * 1.1.0.Final sthorger at redhat.com
>>>>>> META-INF/jpa-changelog-1.1.0.Final.xml 2015-01-30
>>>>>> 00:55:27.065618 3 EXECUTED
>>>>>>
>>>>>>
>>>>>> Error message in log...
>>>>>>
>>>>>> 15:12:31,238 INFO [org.keycloak.services.resources.KeycloakApplication]
>>>>>> (ServerService Thread Pool -- 69) Load config from
>>>>>> /apps/wildfly/wildfly-9.0.1.Final/standalone/configuration/keycloak-server.json
>>>>>>
>>>>>>
>>>>>> 15:12:34,416 INFO
>>>>>> [org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider]
>>>>>>
>>>>>> (ServerService Thread Pool -- 69) Updating database
>>>>>> 15:12:35,982 ERROR
>>>>>> [org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider]
>>>>>>
>>>>>> (ServerService Thread Pool -- 69) Change Set
>>>>>> META-INF/jpa-changelog-1.2.0.Beta1.xml::1.2.0.Beta1::psilva at redhat.com
>>>>>> failed. Error: liquibase.exception.CustomChangeException: Update
>>>>>> 1.2.0.Beta1: Exception when updating data from previous version:
>>>>>> liquibase.exception.UnexpectedLiquibaseException:
>>>>>> liquibase.exception.CustomChangeException: Update 1.2.0.Beta1: Exception
>>>>>> when updating data from previous version
>>>>>> at
>>>>>> liquibase.change.custom.CustomChangeWrapper.generateStatements(CustomChangeWrapper.java:185)
>>>>>>
>>>>>>
>>>>>> at
>>>>>> liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1208)
>>>>>>
>>>>>>
>>>>>> at liquibase.changelog.ChangeSet.execute(ChangeSet.java:550)
>>>>>> at
>>>>>> liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:43)
>>>>>> at
>>>>>> liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:73)
>>>>>> at liquibase.Liquibase.update(Liquibase.java:200)
>>>>>> at liquibase.Liquibase.update(Liquibase.java:181)
>>>>>> at
>>>>>> org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider.update(LiquibaseJpaUpdaterProvider.java:84)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-liquibase-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.lazyInit(DefaultJpaConnectionProviderFactory.java:150)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.create(DefaultJpaConnectionProviderFactory.java:39)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.connections.jpa.DefaultJpaConnectionProviderFactory.create(DefaultJpaConnectionProviderFactory.java:27)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.DefaultKeycloakSession.getProvider(DefaultKeycloakSession.java:99)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.models.jpa.JpaRealmProviderFactory.create(JpaRealmProviderFactory.java:34)
>>>>>>
>>>>>>
>>>>>> [keycloak-model-jpa-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.models.jpa.JpaRealmProviderFactory.create(JpaRealmProviderFactory.java:16)
>>>>>>
>>>>>>
>>>>>> [keycloak-model-jpa-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.DefaultKeycloakSession.getProvider(DefaultKeycloakSession.java:99)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.models.cache.DefaultCacheRealmProvider.getDelegate(DefaultCacheRealmProvider.java:70)
>>>>>>
>>>>>>
>>>>>> [keycloak-invalidation-cache-model-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.models.cache.DefaultCacheRealmProvider.getRealm(DefaultCacheRealmProvider.java:163)
>>>>>>
>>>>>>
>>>>>> [keycloak-invalidation-cache-model-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.managers.ApplianceBootstrap.bootstrap(ApplianceBootstrap.java:40)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.managers.ApplianceBootstrap.bootstrap(ApplianceBootstrap.java:31)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.resources.KeycloakApplication.setupDefaultRealm(KeycloakApplication.java:158)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:88)
>>>>>>
>>>>>>
>>>>>> [keycloak-services-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>>>>>>
>>>>>>
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>>>>>>
>>>>>>
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:148)
>>>>>>
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2211)
>>>>>>
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:295)
>>>>>>
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:236)
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:112)
>>>>>>
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)
>>>>>>
>>>>>>
>>>>>> [resteasy-jaxrs-3.0.11.Final.jar:]
>>>>>> at
>>>>>> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
>>>>>>
>>>>>>
>>>>>> [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
>>>>>> at
>>>>>> org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
>>>>>>
>>>>>>
>>>>>> at
>>>>>> io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
>>>>>>
>>>>>>
>>>>>> [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
>>>>>> at
>>>>>> io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:230)
>>>>>>
>>>>>>
>>>>>> [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
>>>>>> at
>>>>>> io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:131)
>>>>>>
>>>>>>
>>>>>> [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
>>>>>> at
>>>>>> io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:511)
>>>>>>
>>>>>>
>>>>>> [undertow-servlet-1.2.9.Final.jar:1.2.9.Final]
>>>>>> at
>>>>>> org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101)
>>>>>>
>>>>>>
>>>>>> at
>>>>>> org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
>>>>>>
>>>>>>
>>>>>> at
>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>>>
>>>>>>
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at
>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>>>
>>>>>>
>>>>>> [rt.jar:1.7.0_51]
>>>>>> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
>>>>>> at org.jboss.threads.JBossThread.run(JBossThread.java:320)
>>>>>> Caused by: liquibase.exception.CustomChangeException: Update
>>>>>> 1.2.0.Beta1: Exception when updating data from previous version
>>>>>> at
>>>>>> org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.generateStatementsImpl(JpaUpdate1_2_0_Beta1.java:43)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-liquibase-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.connections.jpa.updater.liquibase.custom.CustomKeycloakTask.generateStatements(CustomKeycloakTask.java:79)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-liquibase-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> liquibase.change.custom.CustomChangeWrapper.generateStatements(CustomChangeWrapper.java:178)
>>>>>>
>>>>>>
>>>>>> ... 44 more
>>>>>> Caused by: java.lang.ClassCastException: java.math.BigDecimal cannot be
>>>>>> cast to java.lang.Long
>>>>>> at
>>>>>> org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.addDefaultProtocolMappers(JpaUpdate1_2_0_Beta1.java:296)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-liquibase-1.4.0.Final.jar:1.4.0.Final]
>>>>>> at
>>>>>> org.keycloak.connections.jpa.updater.liquibase.custom.JpaUpdate1_2_0_Beta1.generateStatementsImpl(JpaUpdate1_2_0_Beta1.java:41)
>>>>>>
>>>>>>
>>>>>> [keycloak-connections-jpa-liquibase-1.4.0.Final.jar:1.4.0.Final]
>>>>>> ... 46 more
>>>>>>
>>>>>> --
>>>>>> ===================================================
>>>>>>
>>>>>> *Stephen Flynn*
>>>>>>
>>>>>> *Director, JF Technology (UK) Ltd*
>>>>>>
>>>>>> Cell (UK) : +44 7768 003 882
>>>>>> Phone : +44 20 7833 8346
>>>>>> IM : xmpp:stephen.flynn at jftechnology.com
>>>>>> IM : aim:stephen.flynn at jftechnology.com
>>>>>> Website : http://www.jftechnology.com
>>>>>> Tech support : support at jftechnology.com
>>>>>> <mailto:support at jftechnology.com>
>>>>>>
>>>>>> ===================================================
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> keycloak-user mailing list
>>>>>> keycloak-user at lists.jboss.org
>>>>>> https://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/20150803/5fb46c56/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stephen_flynn.vcf
Type: text/x-vcard
Size: 233 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/keycloak-user/attachments/20150803/5fb46c56/attachment-0001.vcf
More information about the keycloak-user
mailing list