3975: Accessing an incompatible database corrupts the database
svn: r16212
This commit is contained in:
@ -52,7 +52,7 @@ from sys import maxint
|
||||
from gen.lib import (GenderStats, Person, Family, Event, Place, Source,
|
||||
MediaObject, Repository, Note, Tag)
|
||||
from gen.db import (DbBsddbRead, DbWriteBase, BSDDBTxn,
|
||||
DbTxn, BsddbBaseCursor, DbVersionError,
|
||||
DbTxn, BsddbBaseCursor, DbVersionError, DbEnvironmentError,
|
||||
DbUpgradeRequiredError, find_surname, find_surname_name,
|
||||
DbUndoBSDDB as DbUndo)
|
||||
from gen.db.dbconst import *
|
||||
@ -402,13 +402,17 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
db.DB_INIT_MPOOL | db.DB_INIT_LOCK |\
|
||||
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD
|
||||
|
||||
# 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
|
||||
|
||||
self.env.open(env_name, env_flags)
|
||||
try:
|
||||
self.env.open(env_name, env_flags)
|
||||
except Exception, msg:
|
||||
try:
|
||||
self.__close_early()
|
||||
except:
|
||||
pass
|
||||
raise DbEnvironmentError(msg)
|
||||
self.env.txn_checkpoint()
|
||||
|
||||
if callback:
|
||||
@ -1724,7 +1728,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
if version < 15:
|
||||
upgrade.gramps_upgrade_15(self)
|
||||
|
||||
print "Upgrade time:", int(time.time()-t), "seconds"
|
||||
_LOG.debug("Upgrade time: %d seconds" % int(time.time()-t))
|
||||
|
||||
def set_auto_remove(self):
|
||||
"""
|
||||
|
Reference in New Issue
Block a user