Let me look at this today. The spring changes I have will greatly improve these initialization issues. The current state of spring on master makes it very difficult to deterministic ally initialize beans. With the spring changes I have in place the database upgrade stuff is in the bootstrap context and will be initialized before everything else.
You mentioned there's an issue with the database upgrade depending on a DAO. I'll look into that and fix it today. The fix will be on the spring-modularization branch which I'd like to get merge ASAP. Darren > On Oct 3, 2013, at 2:08 AM, Hugo Trippaers <h...@trippaers.nl> wrote: > > Heya guys, > > I'm still running into this problem. Our jenkins automagically installs and > tests the latest packages based on master. With a clean database on clean > machines. > > The error reported is similar to the error encountered: > > Caused by: com.cloud.utils.exception.CloudRuntimeException: DB Exception on: > com.mysql.jdbc.JDBC4PreparedStatement@64726693: SELECT > configuration.instance, configuration.component, configuration.name, > configuration.value, configuration.default_value, configuration.description, > configuration.category, configuration.is_dynamic, configuration.scope, > configuration.updated FROM configuration WHERE configuration.name = > _binary'storage.cache.replacement.lru.interval' ORDER BY RAND() LIMIT 1 > at > com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:421) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:356) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > com.cloud.utils.db.GenericDaoBase.findOneIncludingRemovedBy(GenericDaoBase.java:869) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl.findByName(ConfigurationDaoImpl.java:201) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl.getValue(ConfigurationDaoImpl.java:166) > at > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > at > org.apache.cloudstack.storage.cache.manager.StorageCacheReplacementAlgorithmLRU.initialize(StorageCacheReplacementAlgorithmLRU.java:63) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:616) > at > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:346) > at > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:299) > at > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:132) > ... 79 more > Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown > column 'configuration.default_value' in 'field list' > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at java.lang.reflect.Constructor.newInstance(Constructor.java:532) > at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) > at com.mysql.jdbc.Util.getInstance(Util.java:386) > at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053) > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074) > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006) > at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468) > at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629) > at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719) > at > com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) > at > com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2318) > at > org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) > at > org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) > at > com.cloud.utils.db.GenericDaoBase.searchIncludingRemoved(GenericDaoBase.java:415) > ... 116 more > > The full log is here: > http://nvpmadm1.nvp.strocamp.net:8080/job/cloudstack-qa-env-test/505/console > > This still appears to be an issue. How can we make sure that the database is > properly updated before this piece of code is hit? > > Cheers, > > Hugo > > >> On Sep 24, 2013, at 4:13 PM, Daan Hoogland <daan.hoogl...@gmail.com> wrote: >> >> works in the latest version >> >>> On Tue, Sep 24, 2013 at 4:09 PM, Daan Hoogland <daan.hoogl...@gmail.com> >>> wrote: >>> I ran into this as well, As I did some change to schema-420-430.sql I >>> was my primary suspect. It does not have to do with my field though. >>> Still looking, >>> Daan >>> >>>> On Tue, Sep 24, 2013 at 2:17 PM, Wei ZHOU <ustcweiz...@gmail.com> wrote: >>>> I ran a fresh installation on devcloud just now, it works. >>>> some records in configuration table are introduced by sql files, and >>>> ConfigurationServerImpl will check and insert the records if not exist. >>>> >>>> >>>> 2013/9/24 Hugo Trippaers <h...@trippaers.nl> >>>> >>>>> Hey all, >>>>> >>>>> Noticed an interesting problem today. I was trying to start a management >>>>> server based on the latest sources in master, but failed. The reason was >>>>> that the configuration threw an exception that a certain column in the >>>>> database fit not exist. This column is added during the database upgrade >>>>> sequence, but apparently the configuration is already accessed before the >>>>> database upgrade takes place. >>>>> >>>>> Seems like a chicken and egg problem to me. >>>>> >>>>> Did anybody else run into this problem? >>>>> >>>>> Cheers, >>>>> >>>>> Hugo >