Fix error when opening bsddb db in read-only mode (#624)
Fixes #10615 BSDDB had errors when trying to open in read-only mode.
This commit is contained in:
parent
31eecac590
commit
21408ab9d2
@ -619,11 +619,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
|
|
||||||
# The DB_PRIVATE flag must go if we ever move to multi-user setup
|
# The DB_PRIVATE flag must go if we ever move to multi-user setup
|
||||||
env_flags = db.DB_CREATE | db.DB_PRIVATE |\
|
env_flags = db.DB_CREATE | db.DB_PRIVATE |\
|
||||||
db.DB_INIT_MPOOL |\
|
db.DB_INIT_MPOOL
|
||||||
db.DB_INIT_LOG | db.DB_INIT_TXN
|
if not self.readonly:
|
||||||
|
env_flags |= db.DB_INIT_LOG | db.DB_INIT_TXN
|
||||||
# As opposed to before, we always try recovery on databases
|
# As opposed to before, we always try recovery on databases
|
||||||
env_flags |= db.DB_RECOVER
|
env_flags |= db.DB_RECOVER
|
||||||
|
|
||||||
# Environment name is now based on the filename
|
# Environment name is now based on the filename
|
||||||
env_name = name
|
env_name = name
|
||||||
@ -638,7 +638,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
pass
|
pass
|
||||||
raise DbEnvironmentError(msg)
|
raise DbEnvironmentError(msg)
|
||||||
|
|
||||||
self.env.txn_checkpoint()
|
if not self.readonly:
|
||||||
|
self.env.txn_checkpoint()
|
||||||
|
|
||||||
if callback:
|
if callback:
|
||||||
callback(25)
|
callback(25)
|
||||||
@ -1330,7 +1331,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
return
|
return
|
||||||
if self.txn:
|
if self.txn:
|
||||||
self.transaction_abort(self.transaction)
|
self.transaction_abort(self.transaction)
|
||||||
self.env.txn_checkpoint()
|
if not self.readonly:
|
||||||
|
self.env.txn_checkpoint()
|
||||||
|
|
||||||
self.__close_metadata()
|
self.__close_metadata()
|
||||||
self.name_group.close()
|
self.name_group.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user