File 0008-Recover-on-DB-version-change.dif of Package openldap2.import4093

From 62ea7479d3cfe72cb3780ac4ab9cf5942c408406 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer@suse.de>
Date: Tue, 5 Oct 2010 14:20:22 +0200
Subject: [PATCH 8/8] Recover on DB version change

If the libdb Version changed try to recover the database. Note: This will
only succeed if only the format of transaction logs changed.

 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c
index 9bb1024..aa8cac3 100644
--- a/servers/slapd/back-bdb/init.c
+++ b/servers/slapd/back-bdb/init.c
@@ -330,6 +330,13 @@ shm_retry:
 	rc = (bdb->bi_dbenv->open)( bdb->bi_dbenv, dbhome,
 			flags | do_recover, bdb->bi_dbenv_mode );
 
+	if ( rc == DB_VERSION_MISMATCH ) {
+		Debug( LDAP_DEBUG_ANY,
+				LDAP_XSTRING(bdb_db_open) ": bdb version change detected "
+				"trying to recover\n", 0, 0, 0 );
+		rc = (bdb->bi_dbenv->open)( bdb->bi_dbenv, dbhome,
+				flags | DB_RECOVER, bdb->bi_dbenv_mode );
+	}
 	if ( rc ) {
 		/* Regular open failed, probably a missing shm environment.
 		 * Start over, do a recovery.
-- 
1.7.1

openSUSE Build Service is sponsored by