]> git.decadent.org.uk Git - dak.git/commitdiff
update db
authorJoerg Jaspert <joerg@debian.org>
Mon, 16 Feb 2009 21:30:24 +0000 (22:30 +0100)
committerJoerg Jaspert <joerg@debian.org>
Mon, 16 Feb 2009 21:30:24 +0000 (22:30 +0100)
(hopefully) fix the bug that dak update-db happily ignores errors
from the update scripts, going on with all the other following updates.
Which isn't all that helpful.

Signed-off-by: Joerg Jaspert <joerg@debian.org>
dak/dakdb/update1.py
dak/dakdb/update2.py
dak/dakdb/update3.py
dak/update_db.py
daklib/dak_exceptions.py

index 7778b1be7cfe41fbc9e5b9fc70262674885cd341..ff2b62ee453eb99faaf2d8f1c1bb8d5e7f20fae4 100755 (executable)
@@ -24,7 +24,9 @@
 
 ################################################################################
 
-import psycopg2, time
+import psycopg2
+import time
+from daklib.dak_exceptions import DBUpdateError
 
 ################################################################################
 
@@ -59,6 +61,4 @@ def do_update(self):
 
     except psycopg2.ProgrammingError, msg:
         self.db.rollback()
-        print "FATAL: Unable to apply DM table update 1!"
-        print "Error Message: " + str(msg)
-        print "Database changes have been rolled back."
+        raise DBUpdateError, "Unable to appy DM table updates, rollback issued. Error message : %s" % (str(msg)
index 71b43fa701ccd73caab555e9e878097ad4a15e24..b1ba67296e93dec2ef91cd2cad26f3255ad1ecc8 100755 (executable)
@@ -21,7 +21,9 @@
 
 ################################################################################
 
-import psycopg2, time
+import psycopg2
+import time
+from daklib.dak_exceptions import DBUpdateError
 
 ################################################################################
 
@@ -391,6 +393,4 @@ $$
 
     except psycopg2.ProgrammingError, msg:
         self.db.rollback()
-        print "FATAL: Unable to apply debversion table update 2!"
-        print "Error Message: " + str(msg)
-        print "Database changes have been rolled back."
+        raise DBUpdateError, "Unable to appy debversion updates, rollback issued. Error message : %s" % (str(msg)
index df89fb9d6300710e85ec890d51a830b25f8b3a76..3a628de088bf47b9da5b906428bd5fa68dfa2730 100755 (executable)
@@ -20,7 +20,9 @@
 
 ################################################################################
 
-import psycopg2, time
+import psycopg2
+import time
+from daklib.dak_exceptions import DBUpdateError
 
 ################################################################################
 
@@ -36,6 +38,4 @@ def do_update(self):
 
     except psycopg2.ProgrammingError, msg:
         self.db.rollback()
-        print "FATAL: Unable to apply db update 3!"
-        print "Error Message: " + str(msg)
-        print "Database changes have been rolled back."
+        raise DBUpdateError, "Unable to appy versioncmp removal, rollback issued. Error message : %s" % (str(msg)
index f9b6e478fd6686ecde9d3b15f56b8f61ded2a645..5d5fef477b06972e57bc26b9ec937a283b7840b5 100755 (executable)
@@ -137,9 +137,15 @@ Updates dak's database schema to the lastest version. You should disable crontab
 
         for i in range (database_revision, required_database_schema):
             print "updating databse schema from " + str(database_revision) + " to " + str(i+1)
-            dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)])
-            update_module = getattr(dakdb, "update"+str(i+1))
-            update_module.do_update(self)
+            try:
+                dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)])
+                update_module = getattr(dakdb, "update"+str(i+1))
+                update_module.do_update(self)
+            except DBUpdateError, e:
+                # Seems the update did not work.
+                print "Was unable to update database schema from %s to %s." % (str(database_revision), str(i+1))
+                print "The error message received was %s" % (e)
+                utils.fubar("DB Schema upgrade failed")
             database_revision += 1
 
 ################################################################################
index b210a6f4f9a0978a09255934c391e17ef393cf05..d18bee1e6f1691c6940268175fddcd9fa18b1e17 100755 (executable)
@@ -57,7 +57,8 @@ dakerrors = {
     "SendmailFailedError": """Exception raised when Sendmail invocation failed.""",
     "NoFreeFilenameError": """Exception raised when no alternate filename was found.""",
     "TransitionsError":    """Exception raised when transitions file can't be parsed.""",
-    "NoSourceFieldError":  """Exception raised - we cant find the source - wtf?"""
+    "NoSourceFieldError":  """Exception raised - we cant find the source - wtf?""",
+    "DBUpdateError":       """Exception raised - could not update the database"""
 } #: All dak exceptions
 
 def construct_dak_exception(name, description):