You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Milamber <mi...@apache.org> on 2013/11/20 09:37:17 UTC

Potential bug with CS 4.1.1 to 4.2.1 db upgrade

Hello,

Yesterday, I've upgraded a CloudStack 4.1.1 installation to CloudStack 
4.2.1, I've received this error when I started the management service 
the first time after upgrade (below).

To fix it, I've changed this line in schema-410to420.sql
CREATE TABLE `cloud`.`vm_snapshots` (
to
CREATE TABLE IF NOT EXISTS `cloud`.`vm_snapshots` (


And I've restored the cloud db backup from the mysql dump executed just 
before upgrade, and (re-)start the management service.
All is good after.

I've open this ticket on Jira
https://issues.apache.org/jira/browse/CLOUDSTACK-5214

Please confirm that is a bug (or not).

Milamber


=========
2013-11-20 00:12:31,057 INFO  [utils.component.ComponentContext] 
(Timer-1:null) Running SystemIntegrityChecker managementServerNode
2013-11-20 00:12:31,057 INFO  [utils.component.ComponentContext] 
(Timer-1:null) Running SystemIntegrityChecker databaseUpgradeChecker
2013-11-20 00:12:31,057 INFO  [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) Grabbing lock to check for database upgrade.
2013-11-20 00:12:31,059 DEBUG [upgrade.dao.VersionDaoImpl] 
(Timer-1:null) Checking to see if the database is at a version before it 
was the version table is created
2013-11-20 00:12:31,063 INFO  [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) DB version = 4.1.1 Code Version = 4.2.1-SNAPSHOT
2013-11-20 00:12:31,063 INFO  [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) Database upgrade must be performed from 4.1.1 to 
4.2.1-SNAPSHOT
2013-11-20 00:12:31,064 DEBUG [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) Running upgrade Upgrade410to420 to upgrade from 
4.1.0-4.1.1 to 4.2.0
2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) 
Looking for db/schema-410to420.sql in the classpath
2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) 
System resource: 
file:/usr/share/cloudstack-management/setup/db/schema-410to420.sql
2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) 
Absolute path = 
/usr/share/cloudstack-management/setup/db/schema-410to420.sql
[....]
2013-11-20 00:12:32,546 ERROR [utils.db.ScriptRunner] (Timer-1:null) 
Error executing: CREATE TABLE `cloud`.`vm_snapshots` (   `id` bigint(20) 
unsigned NOT NULL auto_increment COMMENT 'Primary Key', `uuid` 
varchar(40) NOT NULL,   `name` varchar(255) NOT NULL, `display_name` 
varchar(255) default NULL,   `description` varchar(255) default NULL,   
`vm_id` bigint(20) unsigned NOT NULL, `account_id` bigint(20) unsigned 
NOT NULL,   `domain_id` bigint(20) unsigned NOT NULL,   
`vm_snapshot_type` varchar(32) default NULL, `state` varchar(32) NOT 
NULL,   `parent` bigint unsigned default NULL,   `current` int(1) 
unsigned default NULL,   `update_count` bigint unsigned NOT NULL DEFAULT 
0,   `updated` datetime default NULL,   `created` datetime default 
NULL,   `removed` datetime default NULL,   PRIMARY KEY  (`id`),   
CONSTRAINT UNIQUE KEY `uc_vm_snapshots_uuid` (`uuid`),   INDEX 
`vm_snapshots_name` (`name`),   INDEX `vm_snapshots_vm_id` (`vm_id`),   
INDEX `vm_snapshots_account_id` (`account_id`),   INDEX 
`vm_snapshots_display_name` (`display_name`),   INDEX 
`vm_snapshots_removed` (`removed`),   INDEX `vm_snapshots_parent` 
(`parent`),   CONSTRAINT `fk_vm_snapshots_vm_id__vm_instance_id` FOREIGN 
KEY `fk_vm_snapshots_vm_id__vm_instance_id` (`vm_id`) REFERENCES 
`vm_instance` (`id`),   CONSTRAINT 
`fk_vm_snapshots_account_id__account_id` FOREIGN KEY 
`fk_vm_snapshots_account_id__account_id` (`account_id`) REFERENCES 
`account` (`id`),   CONSTRAINT `fk_vm_snapshots_domain_id__domain_id` 
FOREIGN KEY `fk_vm_snapshots_domain_id__domain_id` (`domain_id`) 
REFERENCES `domain` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2013-11-20 00:12:32,546 ERROR [utils.db.ScriptRunner] (Timer-1:null) 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 
'vm_snapshots' already exists
2013-11-20 00:12:32,549 ERROR [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) Unable to execute upgrade script: 
/usr/share/cloudstack-management/setup/db/schema-410to420.sql
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 
'vm_snapshots' already exists
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeChecker.java:204)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeChecker.java:265)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChecker.java:394)
     at 
com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(ComponentContext.java:90)
     at 
com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
     at java.util.TimerThread.mainLoop(Timer.java:534)
     at java.util.TimerThread.run(Timer.java:484)
2013-11-20 00:12:32,552 ERROR [cloud.upgrade.DatabaseUpgradeChecker] 
(Timer-1:null) Unable to upgrade the database
com.cloud.utils.exception.CloudRuntimeException: Unable to execute 
upgrade script: 
/usr/share/cloudstack-management/setup/db/schema-410to420.sql
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeChecker.java:213)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeChecker.java:265)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChecker.java:394)
     at 
com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(ComponentContext.java:90)
     at 
com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
     at java.util.TimerThread.mainLoop(Timer.java:534)
     at java.util.TimerThread.run(Timer.java:484)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
Table 'vm_snapshots' already exists
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeChecker.java:204)
     ... 6 more
2013-11-20 00:12:32,556 ERROR [utils.component.ComponentContext] 
(Timer-1:null) System integrity check failed. Refuse to startup
com.cloud.utils.exception.CloudRuntimeException: Unable to upgrade the 
database
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeChecker.java:296)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChecker.java:394)
     at 
com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(ComponentContext.java:90)
     at 
com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
     at java.util.TimerThread.mainLoop(Timer.java:534)
     at java.util.TimerThread.run(Timer.java:484)
Caused by: com.cloud.utils.exception.CloudRuntimeException: Unable to 
execute upgrade script: 
/usr/share/cloudstack-management/setup/db/schema-410to420.sql
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeChecker.java:213)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeChecker.java:265)
     ... 5 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
Table 'vm_snapshots' already exists
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
     at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
     at 
com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeChecker.java:204)
     ... 6 more



RE: Potential bug with CS 4.1.1 to 4.2.1 db upgrade

Posted by "Musayev, Ilya" <im...@webmd.net>.
This statement if fairly safe IMHO. We just catch a corner case if table does not exists.

It warrants a fix.

> -----Original Message-----
> From: Milamber [mailto:milamber@apache.org]
> Sent: Wednesday, November 20, 2013 3:37 AM
> To: dev@cloudstack.apache.org
> Subject: Potential bug with CS 4.1.1 to 4.2.1 db upgrade
> 
> Hello,
> 
> Yesterday, I've upgraded a CloudStack 4.1.1 installation to CloudStack 4.2.1,
> I've received this error when I started the management service the first time
> after upgrade (below).
> 
> To fix it, I've changed this line in schema-410to420.sql CREATE TABLE
> `cloud`.`vm_snapshots` ( to CREATE TABLE IF NOT EXISTS
> `cloud`.`vm_snapshots` (
> 
> 
> And I've restored the cloud db backup from the mysql dump executed just
> before upgrade, and (re-)start the management service.
> All is good after.
> 
> I've open this ticket on Jira
> https://issues.apache.org/jira/browse/CLOUDSTACK-5214
> 
> Please confirm that is a bug (or not).
> 
> Milamber
> 
> 
> =========
> 2013-11-20 00:12:31,057 INFO  [utils.component.ComponentContext]
> (Timer-1:null) Running SystemIntegrityChecker managementServerNode
> 2013-11-20 00:12:31,057 INFO  [utils.component.ComponentContext]
> (Timer-1:null) Running SystemIntegrityChecker databaseUpgradeChecker
> 2013-11-20 00:12:31,057 INFO  [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) Grabbing lock to check for database upgrade.
> 2013-11-20 00:12:31,059 DEBUG [upgrade.dao.VersionDaoImpl]
> (Timer-1:null) Checking to see if the database is at a version before it was the
> version table is created
> 2013-11-20 00:12:31,063 INFO  [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) DB version = 4.1.1 Code Version = 4.2.1-SNAPSHOT
> 2013-11-20 00:12:31,063 INFO  [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) Database upgrade must be performed from 4.1.1 to 4.2.1-
> SNAPSHOT
> 2013-11-20 00:12:31,064 DEBUG [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) Running upgrade Upgrade410to420 to upgrade from
> 4.1.0-4.1.1 to 4.2.0
> 2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) Looking for
> db/schema-410to420.sql in the classpath
> 2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) System
> resource:
> file:/usr/share/cloudstack-management/setup/db/schema-410to420.sql
> 2013-11-20 00:12:31,069 DEBUG [utils.script.Script] (Timer-1:null) Absolute
> path = /usr/share/cloudstack-management/setup/db/schema-410to420.sql
> [....]
> 2013-11-20 00:12:32,546 ERROR [utils.db.ScriptRunner] (Timer-1:null)
> Error executing: CREATE TABLE `cloud`.`vm_snapshots` (   `id` bigint(20)
> unsigned NOT NULL auto_increment COMMENT 'Primary Key', `uuid`
> varchar(40) NOT NULL,   `name` varchar(255) NOT NULL, `display_name`
> varchar(255) default NULL,   `description` varchar(255) default NULL,
> `vm_id` bigint(20) unsigned NOT NULL, `account_id` bigint(20) unsigned
> NOT NULL,   `domain_id` bigint(20) unsigned NOT NULL,
> `vm_snapshot_type` varchar(32) default NULL, `state` varchar(32) NOT
> NULL,   `parent` bigint unsigned default NULL,   `current` int(1)
> unsigned default NULL,   `update_count` bigint unsigned NOT NULL DEFAULT
> 0,   `updated` datetime default NULL,   `created` datetime default
> NULL,   `removed` datetime default NULL,   PRIMARY KEY  (`id`),
> CONSTRAINT UNIQUE KEY `uc_vm_snapshots_uuid` (`uuid`),   INDEX
> `vm_snapshots_name` (`name`),   INDEX `vm_snapshots_vm_id` (`vm_id`),
> INDEX `vm_snapshots_account_id` (`account_id`),   INDEX
> `vm_snapshots_display_name` (`display_name`),   INDEX
> `vm_snapshots_removed` (`removed`),   INDEX `vm_snapshots_parent`
> (`parent`),   CONSTRAINT `fk_vm_snapshots_vm_id__vm_instance_id`
> FOREIGN
> KEY `fk_vm_snapshots_vm_id__vm_instance_id` (`vm_id`) REFERENCES
> `vm_instance` (`id`),   CONSTRAINT
> `fk_vm_snapshots_account_id__account_id` FOREIGN KEY
> `fk_vm_snapshots_account_id__account_id` (`account_id`) REFERENCES
> `account` (`id`),   CONSTRAINT `fk_vm_snapshots_domain_id__domain_id`
> FOREIGN KEY `fk_vm_snapshots_domain_id__domain_id` (`domain_id`)
> REFERENCES `domain` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
> 2013-11-20 00:12:32,546 ERROR [utils.db.ScriptRunner] (Timer-1:null)
> com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table
> 'vm_snapshots' already exists
> 2013-11-20 00:12:32,549 ERROR [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) Unable to execute upgrade script:
> /usr/share/cloudstack-management/setup/db/schema-410to420.sql
> com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table
> 'vm_snapshots' already exists
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeC
> hecker.java:204)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeCh
> ecker.java:265)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChec
> ker.java:394)
>      at
> com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(Co
> mponentContext.java:90)
>      at
> com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
>      at java.util.TimerThread.mainLoop(Timer.java:534)
>      at java.util.TimerThread.run(Timer.java:484)
> 2013-11-20 00:12:32,552 ERROR [cloud.upgrade.DatabaseUpgradeChecker]
> (Timer-1:null) Unable to upgrade the database
> com.cloud.utils.exception.CloudRuntimeException: Unable to execute
> upgrade script:
> /usr/share/cloudstack-management/setup/db/schema-410to420.sql
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeC
> hecker.java:213)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeCh
> ecker.java:265)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChec
> ker.java:394)
>      at
> com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(Co
> mponentContext.java:90)
>      at
> com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
>      at java.util.TimerThread.mainLoop(Timer.java:534)
>      at java.util.TimerThread.run(Timer.java:484)
> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
> Table 'vm_snapshots' already exists
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeC
> hecker.java:204)
>      ... 6 more
> 2013-11-20 00:12:32,556 ERROR [utils.component.ComponentContext]
> (Timer-1:null) System integrity check failed. Refuse to startup
> com.cloud.utils.exception.CloudRuntimeException: Unable to upgrade the
> database
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeCh
> ecker.java:296)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.check(DatabaseUpgradeChec
> ker.java:394)
>      at
> com.cloud.utils.component.ComponentContext.initComponentsLifeCycle(Co
> mponentContext.java:90)
>      at
> com.cloud.servlet.CloudStartupServlet$1.run(CloudStartupServlet.java:54)
>      at java.util.TimerThread.mainLoop(Timer.java:534)
>      at java.util.TimerThread.run(Timer.java:484)
> Caused by: com.cloud.utils.exception.CloudRuntimeException: Unable to
> execute upgrade script:
> /usr/share/cloudstack-management/setup/db/schema-410to420.sql
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeC
> hecker.java:213)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.upgrade(DatabaseUpgradeCh
> ecker.java:265)
>      ... 5 more
> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
> Table 'vm_snapshots' already exists
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:193)
>      at com.cloud.utils.db.ScriptRunner.runScript(ScriptRunner.java:87)
>      at
> com.cloud.upgrade.DatabaseUpgradeChecker.runScript(DatabaseUpgradeC
> hecker.java:204)
>      ... 6 more
> 
>