2done.org

Linuxメインなメモ書き。二度寝してから書く。(ご意見は Twitter あたりで。そのうちコメント欄つけます。)

Nova (Essex) DB projects テーブルが運用中に壊れる

Folsom で修正済みのようだが 6/10 現在、Essex にはバックポートされていない。修正されるまでの暫定対処。

07/04: ver: 2012.1+stable~20120612-3ee026e-0ubuntu1 で対応済み

関連バグ

修正コード

暫定対処: 修正して様子見中(違うかも)

/usr/share/pyshared/nova/db/sqlalchemy/migrate_repo/versions/ 以下を修正し、nova-manage db sync を実行。

パッケージアップデートのタイミングで何かあったり、別の問題が起きても知りまてん・・・。

※ 色々追うのが面倒なので誰か出来る人、後は頼んだ!

$ diff -urN 072_add_dns_table.py.org 072_add_dns_table.py
--- 072_add_dns_table.py.org    2012-04-05 03:29:54.000000000 +0900
+++ 072_add_dns_table.py        2012-06-10 22:18:21.668119042 +0900
@@ -36,7 +36,7 @@
             Column('deleted_at', DateTime(timezone=False)),
             Column('deleted', Boolean(create_constraint=True, name=None)),
             Column('domain',
-                   String(length=512, convert_unicode=False,
+                   String(length=255, convert_unicode=False,
                           assert_unicode=None,
                           unicode_error=None, _warn_on_bytestring=False),
                    primary_key=True, nullable=False),

$ diff -urN 072_mysql_upgrade.sql.org 072_mysql_upgrade.sql
--- 072_mysql_upgrade.sql.org   2012-04-05 03:29:54.000000000 +0900
+++ 072_mysql_upgrade.sql       2012-06-10 22:18:35.811942660 +0900
@@ -3,7 +3,7 @@
     updated_at DATETIME,
     deleted_at DATETIME,
     deleted BOOLEAN,
-    domain VARCHAR(512) CHARACTER SET latin1 NOT NULL,
+    domain VARCHAR(255) NOT NULL,
     scope VARCHAR(255),
     availability_zone VARCHAR(255),
     project_id VARCHAR(255),

$ diff -urN 077_convert_to_utf8.py.org 077_convert_to_utf8.py
--- 077_convert_to_utf8.py.org  2012-06-10 22:20:16.914670629 +0900
+++ 077_convert_to_utf8.py      2012-06-10 22:20:52.898216956 +0900
@@ -46,7 +46,7 @@
             "security_group_rules", "services", "sm_volume",
             "user_project_role_association", "user_role_association",
             "virtual_interfaces", "virtual_storage_arrays", "volume_metadata",
-            "volume_type_extra_specs", "zones"]
+            "volume_type_extra_specs", "zones", "dns_domains"]
         sql = "SET foreign_key_checks = 0;"
         for table in tables:
             sql += "ALTER TABLE %s CONVERT TO CHARACTER SET utf8;" % table