I'm not familiar with RPM install, but I don't think that the workaround
would be valid for everyone - QA folks will not have mvn install on their
machines, so this issue is a blocker for them. You can try it on your
setup though to unblock yourself.

It does have to be fixed in master, either by spring-modularization branch
merge, or by applying some temporarily checkin till the merge is done if
too many people are blocked by that.

-Alena.

On 10/8/13 10:55 AM, "Francois Gaudreault" <fgaudrea...@cloudops.com>
wrote:

>Thanks Alena for the explaination.
>
>What is the better path to fix this on our setup? Should I wait for a
>fix in master or should I manually run the deploydb with mvn? I guess
>the second option won't work since I used RPM?
>
>Francois
>
>On 10/8/2013, 1:47 PM, Alena Prokharchyk wrote:
>> Ok, this is what going on - the DB upgrade procedure is different on
>> developer's setup and when deployed using cloudstack-setup-databases
>>
>> On developers setup:
>>
>> 1) you deploy the code
>> 2) Deploy the DB using 'mvn -P developer -pl developer -Ddeploydb'. As a
>> part of this step, the DataBaseUpgradeChecker:
>>
>> * first deploys the base DB version - 4.0.0
>> * then checks the current version of the code, and performs the db
>>upgrade
>> if needed. So on master, version table looks like this after the db is
>> deployed:
>>
>> mysql> select * from version;
>> +----+---------+---------------------+----------+
>> | id | version | updated             | step     |
>> +----+---------+---------------------+----------+
>> |  1 | 4.0.0   | 2013-10-08 10:34:47 | Complete |
>> |  2 | 4.1.0   | 2013-10-08 17:35:22 | Complete |
>> |  3 | 4.2.0   | 2013-10-08 17:35:22 | Complete |
>> |  4 | 4.3.0   | 2013-10-08 17:35:22 | Complete |
>> +----+---------+---------------------+----------+
>> 4 rows in set (0.00 sec)
>>
>>
>> 3) Start management server.
>>
>>
>> When deployed from rpm:
>>
>> 1) you deploy the code
>> 2) run cloudstack-setup-databases. As the result of this step, 4.0.0
>>base
>> version of the DB is deployed. Thats why you see only 4.0.0 record in
>>the
>> DB.
>> 3) Start management server. DataBaseUpgradeChecker is being invoked as a
>> part of it, and performs the db upgrade to the version of the current
>> code. Only after that all the managers get invoked + system caller
>>context
>> get initialized.
>>
>> Looks like the load order for step 3) got broken recently, and system
>> context gets initialized before the db upgrade is finished. So we either
>> need to fix the order, or invoke DataBaseUpgradeChecker as a part of
>> cloudstack-setup-databases so at the point when management server starts
>> up, the DB already upgraded to the latest version.
>>
>> -Alena.
>>
>>
>> On 10/8/13 10:25 AM, "Francois Gaudreault" <fgaudrea...@cloudops.com>
>> wrote:
>>
>>> Hmm... I just checked the DB version and it's 4.0??? It should be 4.3.0
>>> no?
>>>
>>> mysql> select * from version;
>>> +----+---------+---------------------+----------+
>>> | id | version | updated             | step     |
>>> +----+---------+---------------------+----------+
>>> |  1 | 4.0.0   | 2013-10-08 10:58:49 | Complete |
>>> +----+---------+---------------------+----------+
>>> 1 row in set (0.00 sec)
>>>
>>> I installed cloudstack-management-4.3.0:
>>> [root@eng-testing-cstack_master ~]# rpm -qf
>>> /usr/bin/cloudstack-setup-databases
>>> cloudstack-management-4.3.0-SNAPSHOT.el6.x86_64
>>>
>>> Francois
>>>
>>> On 10/8/2013, 1:04 PM, Francois Gaudreault wrote:
>>>> It's a fresh master RPM install.
>>>>
>>>> Francois
>>>>
>>>> On 10/8/2013, 12:40 PM, Alena Prokharchyk wrote:
>>>>> It is not a small issue. is_default filed was added to the table as a
>>>>> part
>>>>> of the 41-42 db upgrade. Looks like the code tries to retrieve system
>>>>> user
>>>>> before the db upgrade is completed.
>>>>>
>>>>> DB upgrade is a major part of system integrity check; no queries to
>>>>> the DB
>>>>> should be made before its completed. Francois, did you start seeing
>>>>> this
>>>>> problem just recently?
>>>>>
>>>>> -Alena.
>>>>>
>>>>> On 10/8/13 8:04 AM, "Francois Gaudreault" <fgaudrea...@cloudops.com>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I compiled Master this morning, and there is a small DB issue. One
>>>>>> field
>>>>>> is missing in the account table (field default). CS will not start
>>>>>> because of that.
>>>>>>
>>>>>> 2013-10-08 11:01:42,623 FATAL [o.a.c.c.CallContext] (Timer-2:null)
>>>>>> Exiting the system because we're unable to register the system call
>>>>>> context.
>>>>>> com.cloud.utils.exception.CloudRuntimeException: DB Exception on:
>>>>>> com.mysql.jdbc.JDBC4PreparedStatement@4c1aa2e9: SELECT account.id,
>>>>>> account.account_name, account.type, account.domain_id,
>>>>>>account.state,
>>>>>> account.removed, account.cleanup_needed, account.network_domain,
>>>>>> account.uuid, account.default_zone_id, account.default FROM account
>>>>>> WHERE account.id = 1  AND account.removed IS NULL
>>>>>>       at
>>>>>> com.cloud.utils.db.GenericDaoBase.findById(GenericDaoBase.java:986)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>com.cloud.utils.component.ComponentInstantiationPostProcessor$Interce
>>>>>>pt
>>>>>> orD
>>>>>>
>>>>>> ispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>>>>       at
>>>>>> com.cloud.utils.db.GenericDaoBase.lockRow(GenericDaoBase.java:963)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>com.cloud.utils.component.ComponentInstantiationPostProcessor$Interce
>>>>>>pt
>>>>>> orD
>>>>>>
>>>>>> ispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>>>>       at
>>>>>> com.cloud.utils.db.GenericDaoBase.findById(GenericDaoBase.java:926)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>com.cloud.utils.component.ComponentInstantiationPostProcessor$Interce
>>>>>>pt
>>>>>> orD
>>>>>>
>>>>>> ispatcher.intercept(ComponentInstantiationPostProcessor.java:125)
>>>>>>       at
>>>>>> com.cloud.dao.EntityManagerImpl.findById(EntityManagerImpl.java:45)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.context.CallContext.register(CallContext.java:1
>>>>>>66
>>>>>> )
>>>>>>
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.context.CallContext.registerSystemCallContextOn
>>>>>>ce
>>>>>> Onl
>>>>>>
>>>>>> y(CallContext.java:141)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.context.CallContextListener.onEnterContext(Call
>>>>>>Co
>>>>>> nte
>>>>>>
>>>>>> xtListener.java:36)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.managed.context.impl.DefaultManagedContext.call
>>>>>>Wi
>>>>>> thC
>>>>>>
>>>>>> ontext(DefaultManagedContext.java:83)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runW
>>>>>>it
>>>>>> hCo
>>>>>>
>>>>>> ntext(DefaultManagedContext.java:53)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.managed.context.ManagedContextRunnable.run(Mana
>>>>>>ge
>>>>>> dCo
>>>>>>
>>>>>> ntextRunnable.java:46)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.cloudstack.managed.context.ManagedContextTimerTask.run(Man
>>>>>>ag
>>>>>> edC
>>>>>>
>>>>>> ontextTimerTask.java:27)
>>>>>>       at java.util.TimerThread.mainLoop(Timer.java:534)
>>>>>>       at java.util.TimerThread.run(Timer.java:484)
>>>>>> Caused by: 
>>>>>>com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
>>>>>> Unknown column 'account.default' in 'field list'
>>>>>>       at 
>>>>>>sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>> Method)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
>>>>>>or
>>>>>> Acc
>>>>>>
>>>>>> essorImpl.java:57)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
>>>>>>on
>>>>>> str
>>>>>>
>>>>>> uctorAccessorImpl.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.ja
>>>>>>va
>>>>>> :21
>>>>>>
>>>>>> 55)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
>>>>>>23
>>>>>> 18)
>>>>>>
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
>>>>>>ga
>>>>>> tin
>>>>>>
>>>>>> gPreparedStatement.java:96)
>>>>>>       at
>>>>>>
>>>>>> 
>>>>>>org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Dele
>>>>>>ga
>>>>>> tin
>>>>>>
>>>>>> gPreparedStatement.java:96)
>>>>>>       at
>>>>>> com.cloud.utils.db.GenericDaoBase.findById(GenericDaoBase.java:983)
>>>>>>       ... 27 more
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Francois Gaudreault
>>>>>> Architecte de Solution Cloud | Cloud Solutions Architect
>>>>>> fgaudrea...@cloudops.com
>>>>>> 514-629-6775
>>>>>> - - -
>>>>>> CloudOps
>>>>>> 420 rue Guy
>>>>>> Montréal QC  H3J 1S6
>>>>>> www.cloudops.com
>>>>>> @CloudOps_
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>> -- 
>>> Francois Gaudreault
>>> Architecte de Solution Cloud | Cloud Solutions Architect
>>> fgaudrea...@cloudops.com
>>> 514-629-6775
>>> - - -
>>> CloudOps
>>> 420 rue Guy
>>> Montréal QC  H3J 1S6
>>> www.cloudops.com
>>> @CloudOps_
>>>
>>>
>>
>>
>>
>
>
>-- 
>Francois Gaudreault
>Architecte de Solution Cloud | Cloud Solutions Architect
>fgaudrea...@cloudops.com
>514-629-6775
>- - -
>CloudOps
>420 rue Guy
>Montréal QC  H3J 1S6
>www.cloudops.com
>@CloudOps_
>
>


Reply via email to