From 1621aab139f0104cb2c7183c28c52cb6605abb09 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 4 Jul 2011 16:15:11 +0200 Subject: s3:registry: wrap the whole db upgrade in one transaction The purpose of this is to prepare for multiple upgrade steps to be performed in a single transaction, so that no change at all is made to that database if one step fails. Pair-Programmed-With: Gregor Beck --- source3/registry/reg_backend_db.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c index 5c7f48923f..e87ae649ce 100644 --- a/source3/registry/reg_backend_db.c +++ b/source3/registry/reg_backend_db.c @@ -507,29 +507,29 @@ WERROR regdb_init(void) return WERR_CAN_NOT_COMPLETE; } + if (regdb->transaction_start(regdb) != 0) { + return WERR_REG_IO_FAILURE; + } + if (vers_id == REGVER_V1) { DEBUG(10, ("regdb_init: got registry db version %d, upgrading " "to version %d\n", REGVER_V1, REGVER_V2)); - if (regdb->transaction_start(regdb) != 0) { - return WERR_REG_IO_FAILURE; - } - werr = regdb_upgrade_v1_to_v2(); if (!W_ERROR_IS_OK(werr)) { regdb->transaction_cancel(regdb); return werr; } - if (regdb->transaction_commit(regdb) != 0) { - return WERR_REG_IO_FAILURE; - } - vers_id = REGVER_V2; } /* future upgrade code should go here */ + if (regdb->transaction_commit(regdb) != 0) { + return WERR_REG_IO_FAILURE; + } + return WERR_OK; } -- cgit