From 7541dd5b2ec7c4696fd1317534354fc84a57c9b6 Mon Sep 17 00:00:00 2001 From: Serge Noiraud Date: Thu, 28 Feb 2013 19:57:35 +0000 Subject: [PATCH] Bug #06459 : change the lock strategy and split transactions in Merge citation. svn: r21504 --- gramps/cli/clidbman.py | 4 ++-- gramps/gen/db/bsddbtxn.py | 4 ++-- gramps/gen/db/write.py | 13 ++++--------- gramps/plugins/tool/mergecitations.py | 4 ++-- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/gramps/cli/clidbman.py b/gramps/cli/clidbman.py index d88e86dac..bb570bcec 100644 --- a/gramps/cli/clidbman.py +++ b/gramps/cli/clidbman.py @@ -148,8 +148,8 @@ class CLIDbManager(object): from gramps.gen.db import META, PERSON_TBL env = db.DBEnv() flags = db.DB_CREATE | db.DB_PRIVATE |\ - db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\ - db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD + db.DB_INIT_MPOOL |\ + db.DB_INIT_LOG | db.DB_INIT_TXN try: env.open(file_name, flags) except: diff --git a/gramps/gen/db/bsddbtxn.py b/gramps/gen/db/bsddbtxn.py index d55847502..62624b516 100644 --- a/gramps/gen/db/bsddbtxn.py +++ b/gramps/gen/db/bsddbtxn.py @@ -198,8 +198,8 @@ if __name__ == "__main__": x = db.DBEnv() print("3") x.open('/tmp', db.DB_CREATE | db.DB_PRIVATE |\ - db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\ - db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD) + db.DB_INIT_MPOOL |\ + db.DB_INIT_LOG | db.DB_INIT_TXN) print("4") d = dbshelve.DBShelf(x) print("5") diff --git a/gramps/gen/db/write.py b/gramps/gen/db/write.py index 8e4b29afd..70198dc56 100644 --- a/gramps/gen/db/write.py +++ b/gramps/gen/db/write.py @@ -495,8 +495,8 @@ 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_LOCK |\ - db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD + 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 @@ -1135,11 +1135,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): self.transaction_abort(self.transaction) self.env.txn_checkpoint() - lockstats = self.env.lock_stat() - _LOG.debug("lock occupancy: %d%%, locked object occupancy: %d%%" % ( - round(lockstats['maxnlocks']*100/lockstats['maxlocks']), - round(lockstats['maxnobjects']*100/lockstats['maxobjects']))) - self.__close_metadata() self.name_group.close() self.surnames.close() @@ -2055,8 +2050,8 @@ 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_LOCK |\ - db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD + 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 diff --git a/gramps/plugins/tool/mergecitations.py b/gramps/plugins/tool/mergecitations.py index 22a11c1d2..855489f69 100644 --- a/gramps/plugins/tool/mergecitations.py +++ b/gramps/plugins/tool/mergecitations.py @@ -188,8 +188,8 @@ class MergeCitations(tool.BatchTool,ManagedWindow): db.disable_signals() num_merges = 0 - with DbTxn(_("Merge Citation"), db) as trans: - for handle in db.iter_source_handles(): + for handle in db.iter_source_handles(): + with DbTxn(_("Merge Citation"), db) as trans: dict = {} citation_handle_list = list(db.find_backlink_handles(handle)) for (class_name, citation_handle) in citation_handle_list: