X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fupdate_db.py;h=985051ece2951cdb003b3ef86493bca4cdb1a080;hb=fcb42e5c68109ae8d0ea7efac969fa821b110ca8;hp=bfd05fe7b0150cf9bebef0438ffab2eef9b872ab;hpb=dec160172b136c712dddf2c942ee03a52e8e0b88;p=dak.git diff --git a/dak/update_db.py b/dak/update_db.py index bfd05fe7..985051ec 100755 --- a/dak/update_db.py +++ b/dak/update_db.py @@ -41,11 +41,12 @@ import errno from daklib import utils from daklib.config import Config from daklib.dak_exceptions import DBUpdateError +from daklib.daklog import Logger ################################################################################ Cnf = None -required_database_schema = 36 +required_database_schema = 47 ################################################################################ @@ -100,12 +101,25 @@ Updates dak's database schema to the lastest version. You should disable crontab print "No configuration table found, assuming dak database revision to be pre-zero" return -1 +################################################################################ + + def get_transaction_id(self): + ''' + Returns the current transaction id as a string. + ''' + cursor = self.db.cursor() + cursor.execute("SELECT txid_current();") + id = cursor.fetchone()[0] + cursor.close() + return id + ################################################################################ def update_db(self): # Ok, try and find the configuration table print "Determining dak database revision ..." cnf = Config() + logger = Logger(cnf.Cnf, 'update-db') try: # Build a connect string @@ -120,6 +134,7 @@ Updates dak's database schema to the lastest version. You should disable crontab pass database_revision = int(self.get_db_rev()) + logger.log(['transaction id before update: %s' % self.get_transaction_id()]) if database_revision == -1: print "dak database schema predates update-db." @@ -140,20 +155,26 @@ Updates dak's database schema to the lastest version. You should disable crontab if database_revision == required_database_schema: print "no updates required" + logger.log(["no updates required"]) sys.exit(0) for i in range (database_revision, required_database_schema): - print "updating database schema from %d to %d" % (database_revision, i+1) try: dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)]) update_module = getattr(dakdb, "update"+str(i+1)) update_module.do_update(self) + message = "updated database schema from %d to %d" % (database_revision, i+1) + print message + logger.log([message]) except DBUpdateError, e: # Seems the update did not work. print "Was unable to update database schema from %d to %d." % (database_revision, i+1) print "The error message received was %s" % (e) + logger.log(["DB Schema upgrade failed"]) + logger.close() utils.fubar("DB Schema upgrade failed") database_revision += 1 + logger.close() ################################################################################