Description
Upgrading instance to 4.0 FishEye may fail with an error:
2016-03-15 08:28:29,487 INFO - Dropping cru_name for cru_perm_scheme 2016-03-15 08:28:29,507 INFO - Dropping cru_review_id for cru_review_participant 2016-03-15 08:28:49,218 INFO - Dropping cru_source_name for cru_revision 2016-03-15 08:49:10,851 INFO - Dropping cru_user_name for cru_user 2016-03-15 08:49:11,060 INFO - Dropping cru_builtin_group_name for cru_builtin_group 2016-03-15 08:49:11,084 INFO - Dropping cru_user for cru_comment_read_status 2016-03-15 08:49:11,155 ERROR - The Web context could not be started org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dbControlFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.cenqua.crucible.hibernate.DBControlFactoryImpl]: Constructor threw exception; nested exception is com.cenqua.crucible.hibernate.CruDBException: Problem upgrading with script /opt/crucible-cert/fecru-4.0.0/sql/MYSQL/upgrade/upgrade_91.sql: Can't DROP 'cru_user'; check that column/key exists at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:278) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1115) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:706) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:762) [spring-context-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) [spring-context-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) [spring-web-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) [spring-web-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) [spring-web-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:775) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424) [jetty-servlet-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:767) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249) [jetty-servlet-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1252) [jetty-webapp-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) [jetty-webapp-8.1.10.v20130312.jar:8.1.10.v20130312] at com.cenqua.fisheye.web.jetty.FishEyeWebApplicationContext.doStart(FishEyeWebApplicationContext.java:32) [fisheye.jar:?] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.server.Server.doStart(Server.java:280) [jetty-server-8.1.10.v20130312.jar:8.1.10.v20130312] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) [jetty-util-8.1.10.v20130312.jar:8.1.10.v20130312] at com.cenqua.fisheye.web.WebServer.start(WebServer.java:335) [fisheye.jar:?] at com.cenqua.fisheye.ctl.Run.mainImpl(Run.java:229) [fisheye.jar:?] at com.cenqua.fisheye.ctl.Run.main(Run.java:56) [fisheye.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [?:1.8.0_66] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [?:1.8.0_66] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_66] at java.lang.reflect.Method.invoke(Method.java:497) [?:1.8.0_66] at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:101) [fisheyeboot.jar:?] at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:44) [fisheyeboot.jar:?] Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.cenqua.crucible.hibernate.DBControlFactoryImpl]: Constructor threw exception; nested exception is com.cenqua.crucible.hibernate.CruDBException: Problem upgrading with script /opt/crucible-cert/fecru-4.0.0/sql/MYSQL/upgrade/upgrade_91.sql: Can't DROP 'cru_user'; check that column/key exists at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:164) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:125) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:270) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] ... 40 more Caused by: com.cenqua.crucible.hibernate.CruDBException: Problem upgrading with script /opt/crucible-cert/fecru-4.0.0/sql/MYSQL/upgrade/upgrade_91.sql: Can't DROP 'cru_user'; check that column/key exists at com.cenqua.crucible.hibernate.DefaultDBControl.upgrade(DefaultDBControl.java:432) [fisheye.jar:?] at com.cenqua.crucible.hibernate.DefaultDBControl.start(DefaultDBControl.java:260) [fisheye.jar:?] at com.cenqua.crucible.hibernate.DefaultDBControl.start(DefaultDBControl.java:242) [fisheye.jar:?] at com.cenqua.crucible.hibernate.DBControlFactoryImpl.<init>(DBControlFactoryImpl.java:40) [fisheye.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [?:1.8.0_66] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [?:1.8.0_66] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:1.8.0_66] at java.lang.reflect.Constructor.newInstance(Constructor.java:422) [?:1.8.0_66] at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148) [spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE] ... 42 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Can't DROP 'cru_user'; check that column/key exists at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [?:1.8.0_66] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [?:1.8.0_66] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:1.8.0_66] at java.lang.reflect.Constructor.newInstance(Constructor.java:422) [?:1.8.0_66] at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.Util.getInstance(Util.java:386) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2812) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811) [mysql-connector-java-5.1.26-bin.jar:?] at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725) [mysql-connector-java-5.1.26-bin.jar:?] at com.cenqua.crucible.hibernate.upgrade.Hibernate4UpgradeTask.dropConstraints(Hibernate4UpgradeTask.java:99) [fisheye.jar:?] at com.cenqua.crucible.hibernate.upgrade.Hibernate4UpgradeTask.beforeUpgradeScript(Hibernate4UpgradeTask.java:58) [fisheye.jar:?] at com.cenqua.crucible.hibernate.upgrade.UpgradeTaskManager$ChainedUpgradeTask.beforeUpgradeScript(UpgradeTaskManager.java:28) [fisheye.jar:?] at com.cenqua.crucible.hibernate.DefaultDBControl.doUpgrade(DefaultDBControl.java:464) [fisheye.jar:?] at com.cenqua.crucible.hibernate.DefaultDBControl.upgrade(DefaultDBControl.java:423) [fisheye.jar:?] ... 50 more
Workaround
As a FishEye db user may have an access to more than one FishEye database on single db server then we may try to limit an access of FishEye db user to FishEye db only.