Uploaded image for project: 'Magnolia'
  1. Magnolia
  2. MAGNOLIA-8307

Upgrade from H2 1.4 to 2.1 throws JdbcSQLNonTransientException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Workaround exists
    • Icon: Neutral Neutral
    • None
    • 6.2
    • None
    • None

      If I try to upgrade H2 from 1.4 to 2.1 the following exception occurs. In order to migrate the data follow the steps below:

      2022-02-09 20:03:15,780 INFO  info.magnolia.init.MagnoliaServletContextListener : Property sources loaded: [DefaultMagnoliaConfigurationProperties with sources: [SystemPropertySource][EnvironmentPropertySource][ServletContextPropertySource from WEB-INF/config/default/magnolia.properties][ModulePropertiesSource from modules [core, dam, freemarker-support, license, periscope-api, speech-recognizer, categorization-support, ce-product-descriptor, imaging-support, publishing-core, resource-loader, rest-integration, config, i18n, publishing-receiver, publishing-sender, publishing-transactional-core, rest-services, cache, content-types, periscope-core, publishing-transactional-receiver, publishing-transactional-sender, rendering, ui-framework-core, virtual-uri, dam-jcr, ehcache3, imaging, link-unfurl, periscope-result-ranker, tasks-app, templating, ui-framework-jcr, block-templating, dependencies-core, resources, ui-framework, diff, magnolia-resources-templating, scheduler, site, ui-mediaeditor, dam-templating, magnolia-usage-metrics, mte-imaging, spa-rendering, task-management, admincentral, ui-admincentral, about-app, backup, cache-app, content-importer, dam-imaging, definitions-app, groovy, jcr-browser, log-tools, messages-app, pages, pages-app, password-manager, publishing-app, resources-app, security-app, tools, ui-contentapp, dam-app, dam-app-core, diff-pages-app-integration, diff-pages-integration, enterprise, jcr-tools, ldap, mail, publishing-transactional-app, rest-client, rest-content-delivery, site-app, soft-locking, workflow, workflow-compatibility, cache-browser-app, cookie-manager, dam-app-jcr, dependencies, ee-pro-product-descriptor, form, mte, multisite, personalization-core, rest-client-app, rest-client-ui, translation, visitor-manager, workflow-jbpm, advanced-cache, advanced-cache-personalization, campaign-publisher, categorization, javascript-models, marketing-tags, mtk, mtk2, personalization-components, personalization-integration, personalization-preview-app, privacy-ui, rssaggregator, translation-pages-integration, advanced-cache-app, advanced-cache-dpc, categories-app, categories-app-compatibility, categorization-rss-integration, content-editor, content-tags-core, lang-cs, lang-de, lang-es, lang-fi, lang-fr, lang-hr, lang-id, lang-it, lang-ja, lang-nl, lang-no, lang-pl, lang-pt, lang-pt_BR, lang-ru, lang-sk, lang-sq, lang-sv, lang-tr, lang-zh_CN, lang-zh_TW, personalization-components-compatibility, personalization-pages, personalization-personas-app, content-dependencies-ui, content-tags-ui-compatibility, personalization-segmentation-app, sitemesh, stories-app, workflow-pages, content-tags-ui, personalization-traits, lang-ko, webapp]][InitPathsPropertySource]]
      ---------------------------------------------
      MAGNOLIA LICENSE
      ---------------------------------------------
      Version number : 6.2.16
      Core version   : 6.2.16
      Build          : 28. January 2022 (rev. 974feb5561f5c9fff8bcd91d98f960beedf7e571 of UNKNOWN)
      Edition        : Magnolia DX Core
      Provider       : Magnolia International Ltd. (info@magnolia-cms.com)
      2022-02-09 20:03:15,808 INFO  info.magnolia.cms.beans.config.ConfigLoader       : Initializing content repositories
      2022-02-09 20:03:15,808 INFO  info.magnolia.repository.DefaultRepositoryManager : Loading JCR
      2022-02-09 20:03:15,820 INFO  info.magnolia.repository.DefaultRepositoryManager : Loading JCR magnolia
      2022-02-09 20:03:15,902 INFO  info.magnolia.jackrabbit.ProviderImpl             : Loading repository at /Users/rich.gange/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/dx-core-webapp/repositories/magnolia (config file: /Users/rich.gange/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/dx-core-webapp/WEB-INF/config/repo-conf/jackrabbit-bundle-h2-search.xml) - cluster id: "<unset>"
      2022-02-09 20:03:16,114 WARN  org.apache.jackrabbit.core.util.RepositoryLock    : Existing lock file /Users/rich.gange/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/dx-core-webapp/repositories/magnolia/.lock detected. Repository was not shut down properly.
      2022-02-09 20:03:20,496 ERROR org.apache.jackrabbit.core.RepositoryImpl         : failed to start Repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager
      javax.jcr.RepositoryException: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1380) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.createVersionManager(RepositoryImpl.java:513) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:314) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:616) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.jndi.BindableRepository.createRepository(BindableRepository.java:141) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.jndi.BindableRepository.init(BindableRepository.java:117) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.jndi.BindableRepository.<init>(BindableRepository.java:106) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.getObjectInstance(BindableRepositoryFactory.java:52) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.jndi.RegistryHelper.registerRepository(RegistryHelper.java:74) [jackrabbit-core-2.20.4.jar:2.20.4]
      	at info.magnolia.jackrabbit.ProviderImpl.init(ProviderImpl.java:246) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.repository.DefaultRepositoryManager.loadRepository(DefaultRepositoryManager.java:259) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.repository.DefaultRepositoryManager.loadRepositories(DefaultRepositoryManager.java:222) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.repository.DefaultRepositoryManager.init(DefaultRepositoryManager.java:121) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.cms.beans.config.ConfigLoader.load(ConfigLoader.java:136) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.init.MagnoliaServletContextListener$1.doExec(MagnoliaServletContextListener.java:259) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:407) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:404) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.init.MagnoliaServletContextListener.startServer(MagnoliaServletContextListener.java:256) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:182) [magnolia-core-6.2.16.jar:?]
      	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:128) [magnolia-core-6.2.16.jar:?]
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230) [catalina.jar:9.0.50]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1388) [catalina.jar:9.0.50]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_261]
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.50]
      	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_261]
      	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:921) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835) [catalina.jar:9.0.50]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1388) [catalina.jar:9.0.50]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_261]
      	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.50]
      	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_261]
      	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:921) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263) [catalina.jar:9.0.50]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:437) [catalina.jar:9.0.50]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.50]
      	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:934) [catalina.jar:9.0.50]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.50]
      	at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina.jar:9.0.50]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_261]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_261]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_261]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_261]
      	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) [bootstrap.jar:9.0.50]
      	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) [bootstrap.jar:9.0.50]
      Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (General error: "The write format 1 is smaller than the supported format 2 [2.1.210/5]" [50000-210])
      	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.getExtraNameCharacters(ConnectionHelper.java:185) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.prepareDbIdentifier(ConnectionHelper.java:140) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:542) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager.init(H2PersistenceManager.java:80) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1376) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	... 50 more
      Caused by: org.h2.jdbc.JdbcSQLNonTransientException: General error: "The write format 1 is smaller than the supported format 2 [2.1.210/5]" [50000-210]
      	at org.h2.message.DbException.getJdbcSQLException(DbException.java:573) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.message.DbException.get(DbException.java:216) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:166) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.db.Store.<init>(Store.java:140) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Database.<init>(Database.java:324) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.openSession(Engine.java:92) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.openSession(Engine.java:222) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.createSession(Engine.java:201) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.210.jar:2.1.210]
      	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.getExtraNameCharacters(ConnectionHelper.java:185) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.prepareDbIdentifier(ConnectionHelper.java:140) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:542) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager.init(H2PersistenceManager.java:80) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1376) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	... 50 more
      Caused by: org.h2.mvstore.MVStoreException: The write format 1 is smaller than the supported format 2 [2.1.210/5]
      	at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.MVStore.getUnsupportedWriteFormatException(MVStore.java:1059) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.MVStore.readStoreHeader(MVStore.java:878) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.MVStore.<init>(MVStore.java:455) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4056) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.mvstore.db.Store.<init>(Store.java:129) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Database.<init>(Database.java:324) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.openSession(Engine.java:92) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.openSession(Engine.java:222) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.Engine.createSession(Engine.java:201) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.210.jar:2.1.210]
      	at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.210.jar:2.1.210]
      	at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.getExtraNameCharacters(ConnectionHelper.java:185) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.util.db.ConnectionHelper.prepareDbIdentifier(ConnectionHelper.java:140) ~[jackrabbit-data-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:542) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager.init(H2PersistenceManager.java:80) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1376) ~[jackrabbit-core-2.20.4.jar:2.20.4]
      	... 50 more
      

      Workaround
      Migrate the data from H2 1.4 to derby then copy from derby to H2 2.1

      1. Install Backup Extended
      2. Create a backup into Derby format.
      3. Shut down.
      4. Replace the H2 1.4 repo with the new Derby repo created by the backup.
      5. Delete the index folder from each workspace of the Derby repo.
      6. Remove the H2 1.4 jar and replace it with H2 2.1 jar.
      7. Start the instance.
      8. Create a backup into the H2 format.
      9. Shut down.
      10. Replace the Derby repo with the new H2 2.1 repo.
      11. Delete the index folder from each workspace of the H2 2.1 repo.
      12. Start the instance.

        Acceptance criteria

              Unassigned Unassigned
              rgange Richard Gange
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved:

                  Bug DoR
                  Task DoD