From f9f932e5683dd73f41031e3a4777cf02db0d2493 Mon Sep 17 00:00:00 2001 From: Michiel Nauta Date: Sun, 1 May 2011 06:53:01 +0000 Subject: [PATCH] 4322: Upgrading a large database to new version runs out of memory; increase locktable size svn: r17364 --- src/gen/db/dbconst.py | 4 ++-- src/gen/db/write.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gen/db/dbconst.py b/src/gen/db/dbconst.py index b9540804f..a62f8553b 100644 --- a/src/gen/db/dbconst.py +++ b/src/gen/db/dbconst.py @@ -59,8 +59,8 @@ DBMODE_W = "w" # Full Reaw/Write access DBPAGE = 16384 # Size of the pages used to hold items in the database DBMODE = 0666 # Unix mode for database creation DBCACHE = 0x4000000 # Size of the shared memory buffer pool -DBLOCKS = 25000 # Maximum number of locks supported -DBOBJECTS = 25000 # Maximum number of simultaneously locked objects +DBLOCKS = 100000 # Maximum number of locks supported +DBOBJECTS = 100000 # Maximum number of simultaneously locked objects DBUNDO = 1000 # Maximum size of undo buffer import config diff --git a/src/gen/db/write.py b/src/gen/db/write.py index 846a03c01..252e68365 100644 --- a/src/gen/db/write.py +++ b/src/gen/db/write.py @@ -1029,6 +1029,11 @@ 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()