From d24fc82031a88f2ce0c19a11215f265d72de6ffe Mon Sep 17 00:00:00 2001 From: Paul Culley Date: Thu, 21 Jun 2018 19:44:13 -0500 Subject: [PATCH] Fix error when opening bsddb db in read-only mode (#628) Fixes #10615 --- gramps/gen/db/write.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gramps/gen/db/write.py b/gramps/gen/db/write.py index e0e09d708..38b07289b 100644 --- a/gramps/gen/db/write.py +++ b/gramps/gen/db/write.py @@ -763,11 +763,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): # The DB_PRIVATE flag must go if we ever move to multi-user setup env_flags = db.DB_CREATE | db.DB_PRIVATE |\ - db.DB_INIT_MPOOL |\ - db.DB_INIT_LOG | db.DB_INIT_TXN - - # As opposed to before, we always try recovery on databases - env_flags |= db.DB_RECOVER + db.DB_INIT_MPOOL + if not self.readonly: + env_flags |= db.DB_INIT_LOG | db.DB_INIT_TXN + # As opposed to before, we always try recovery on databases + env_flags |= db.DB_RECOVER # Environment name is now based on the filename env_name = name @@ -782,7 +782,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): pass raise DbEnvironmentError(msg) - self.env.txn_checkpoint() + if not self.readonly: + self.env.txn_checkpoint() if callback: callback(25) @@ -1478,7 +1479,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): return if self.txn: self.transaction_abort(self.transaction) - self.env.txn_checkpoint() + if not self.readonly: + self.env.txn_checkpoint() self.__close_metadata() self.name_group.close()