[
https://issues.apache.org/jira/browse/NIFI-11845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17745986#comment-17745986
]
David Handermann commented on NIFI-11845:
-----------------------------------------
H2 2.1 changed the internal format to use package names in type references,
which complicates the migration process. Refactoring the version detection and
migration process should allow for supporting both H2 1.4 and 2.1 as sources
for migration to 2.2.
> Upgrade NiFi Registry from 1.22.0 to 1.23.0 fails with H2 database migration
> failure
> ------------------------------------------------------------------------------------
>
> Key: NIFI-11845
> URL: https://issues.apache.org/jira/browse/NIFI-11845
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Mark Bean
> Assignee: David Handermann
> Priority: Major
> Fix For: 1.23.0
>
> Attachments: nifi-registry-app.log
>
>
> Upgrading NiFi Registry 1.22.0 to 1.23.0 failed during RC evaluation. The H2
> database was not successfully migrated.
> Procedure for reproducing: Configure and start Registry 1.22.0. Add at least
> one versioned flow to the Registry.
> Shutdown Registry 1.22.0
> Install Registry 1.23.0. Configuration files have remained the same in 1.23.0
> (no new or removed properties) so it is safe to copy conf/ directory from
> 1.22.0 into 1.23.0 installation.
> Copy database/ and flow_storage/ directories from 1.22.0 to 1.23.0 (or
> reference appropriately in 1.23.0 config files.
> Attempt to start Registry 1.23.0.
> Stack trace is deep. It begins with:
> 023-07-21 13:12:31,815 ERROR [main] o.springframework.boot.SpringApplication
> Application run failed
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error
> creating bean with name 'niFiRegistryApiApplication': Unsatisfied dependency
> expressed through field 'eventService'; nested exception is
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error
> creating bean with name 'eventService' defined in URL
> [jar:file:/opt/apache-nifi/nifi-registry-1.23.0/work/jetty/nifi-registry-web-api-1.23.0.war/webapp/WEB-INF/lib/nifi-registry-framework-1.23.0.jar!/org/apache/nifi/registry/event/EventService.class]:
> Unsatisfied dependency expressed through constructor parameter 0; nested
> exception is
> org.springframework.beans.factory.UnsatisfiedDependencyException: Error
> creating bean with name 'standardProviderFactory' defined in URL
> [jar:file:/opt/apache-nifi/nifi-registry-1.23.0/work/jetty/nifi-registry-web-api-1.23.0.war/webapp/WEB-INF/lib/nifi-registry-framework-1.23.0.jar!/org/apache/nifi/registry/provider/StandardProviderFactory.class]:
> Unsatisfied dependency expressed through constructor parameter 2; nested
> exception is org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'getDataSource' defined in class path resource
> [org/apache/nifi/registry/db/DataSourceFactory.class]: Bean instantiation via
> factory method failed; nested exception is
> org.springframework.beans.BeanInstantiationException: Failed to instantiate
> [javax.sql.DataSource]: Factory method 'getDataSource' threw exception;
> nested exception is java.lang.RuntimeException: H2 database migration failed
> at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:662)
> at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:642)
> at
> org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
> at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
> at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
> at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
> at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
> at
> org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
> at
> org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
> at
> org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
> at
> org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
> at
> org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175)
> at
> org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155)
> at
> org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97)
> at
> org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174)
> at
> org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:142)
> at
> org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:64)
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
> at
> org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:356)
> at
> org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
> at
> org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916)
> at
> org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
> at
> org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
> at
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
> at
> org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
> at
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
> at
> org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
> at org.eclipse.jetty.server.Server.start(Server.java:423)
> at
> org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
> at
> org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
> at org.eclipse.jetty.server.Server.doStart(Server.java:387)
> at
> org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
> at
> org.apache.nifi.registry.jetty.JettyServer.start(JettyServer.java:93)
> at org.apache.nifi.registry.NiFiRegistry.<init>(NiFiRegistry.java:110)
> at org.apache.nifi.registry.NiFiRegistry.main(NiFiRegistry.java:159)
> And more relevant portion related to NiFi code may include:
> Caused by: java.lang.RuntimeException: H2 database migration failed
> at
> org.apache.nifi.registry.db.DataSourceFactory.createDataSource(DataSourceFactory.java:104)
> at
> org.apache.nifi.registry.db.DataSourceFactory.getDataSource(DataSourceFactory.java:56)
> at
> org.apache.nifi.registry.db.DataSourceFactory$$EnhancerBySpringCGLIB$$feffe099.CGLIB$getDataSource$0(<generated>)
> at
> org.apache.nifi.registry.db.DataSourceFactory$$EnhancerBySpringCGLIB$$feffe099$$FastClassBySpringCGLIB$$36649477.invoke(<generated>)
> at
> org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
> at
> org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
> at
> org.apache.nifi.registry.db.DataSourceFactory$$EnhancerBySpringCGLIB$$feffe099.getDataSource(<generated>)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
> ... 95 common frames omitted
--
This message was sent by Atlassian Jira
(v8.20.10#820010)