* src/GrampsDb/_GrampsDbBase.py: Set batch transaction property in
the constructor. * src/GrampsDb/_GrampsBSDDB.py: Back to durable transactions, set TXN_NOSYNC flag only on batch transactions. svn: r5781
This commit is contained in:
parent
90247368d9
commit
046b55b81e
@ -5,6 +5,11 @@
|
|||||||
* src/GrampsDb/_GrampsDbBase.py (redo): Properly abort redo action
|
* src/GrampsDb/_GrampsDbBase.py (redo): Properly abort redo action
|
||||||
when no redo is available.
|
when no redo is available.
|
||||||
|
|
||||||
|
* src/GrampsDb/_GrampsDbBase.py: Set batch transaction property in
|
||||||
|
the constructor.
|
||||||
|
* src/GrampsDb/_GrampsBSDDB.py: Back to durable transactions, set
|
||||||
|
TXN_NOSYNC flag only on batch transactions.
|
||||||
|
|
||||||
2006-01-17 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
2006-01-17 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||||
* src/EventView.py (ui_definition): Add filter menu entry
|
* src/EventView.py (ui_definition): Add filter menu entry
|
||||||
* src/FamilyList.py (ui_definition): Add filter menu entry
|
* src/FamilyList.py (ui_definition): Add filter menu entry
|
||||||
|
@ -125,7 +125,6 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
def open_table(self,name,dbname,no_txn=False):
|
def open_table(self,name,dbname,no_txn=False):
|
||||||
dbmap = dbshelve.DBShelf(self.env)
|
dbmap = dbshelve.DBShelf(self.env)
|
||||||
dbmap.db.set_pagesize(16384)
|
dbmap.db.set_pagesize(16384)
|
||||||
dbmap.set_flags(db.DB_TXN_NOT_DURABLE)
|
|
||||||
if self.readonly:
|
if self.readonly:
|
||||||
dbmap.open(name, dbname, db.DB_HASH, db.DB_RDONLY)
|
dbmap.open(name, dbname, db.DB_HASH, db.DB_RDONLY)
|
||||||
elif no_txn:
|
elif no_txn:
|
||||||
@ -257,8 +256,7 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
|
|
||||||
self.env = db.DBEnv()
|
self.env = db.DBEnv()
|
||||||
self.env.set_cachesize(0,0x2000000) # 2MB
|
self.env.set_cachesize(0,0x2000000) # 2MB
|
||||||
self.env.set_flags(db.DB_TXN_NOSYNC,1) # async txn
|
self.env.set_flags(db.DB_LOG_AUTOREMOVE,1) # clean up unused logs
|
||||||
#self.env.set_flags(db.DB_LOG_AUTOREMOVE,1) # clean up unused logs
|
|
||||||
# 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_LOCK|\
|
db.DB_INIT_MPOOL|db.DB_INIT_LOCK|\
|
||||||
@ -291,69 +289,69 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
table_flags = db.DB_CREATE|db.DB_AUTO_COMMIT
|
table_flags = db.DB_CREATE|db.DB_AUTO_COMMIT
|
||||||
|
|
||||||
self.surnames = db.DB(self.env)
|
self.surnames = db.DB(self.env)
|
||||||
self.surnames.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.surnames.set_flags(db.DB_DUP)
|
||||||
self.surnames.open(self.full_name, "surnames",
|
self.surnames.open(self.full_name, "surnames",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.name_group = db.DB(self.env)
|
self.name_group = db.DB(self.env)
|
||||||
self.name_group.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.name_group.set_flags(db.DB_DUP)
|
||||||
self.name_group.open(self.full_name, "name_group",
|
self.name_group.open(self.full_name, "name_group",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.id_trans = db.DB(self.env)
|
self.id_trans = db.DB(self.env)
|
||||||
self.id_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.id_trans.set_flags(db.DB_DUP)
|
||||||
self.id_trans.open(self.full_name, "idtrans",
|
self.id_trans.open(self.full_name, "idtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.fid_trans = db.DB(self.env)
|
self.fid_trans = db.DB(self.env)
|
||||||
self.fid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.fid_trans.set_flags(db.DB_DUP)
|
||||||
self.fid_trans.open(self.full_name, "fidtrans",
|
self.fid_trans.open(self.full_name, "fidtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.eid_trans = db.DB(self.env)
|
self.eid_trans = db.DB(self.env)
|
||||||
self.eid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.eid_trans.set_flags(db.DB_DUP)
|
||||||
self.eid_trans.open(self.full_name, "eidtrans",
|
self.eid_trans.open(self.full_name, "eidtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.pid_trans = db.DB(self.env)
|
self.pid_trans = db.DB(self.env)
|
||||||
self.pid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.pid_trans.set_flags(db.DB_DUP)
|
||||||
self.pid_trans.open(self.full_name, "pidtrans",
|
self.pid_trans.open(self.full_name, "pidtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.sid_trans = db.DB(self.env)
|
self.sid_trans = db.DB(self.env)
|
||||||
self.sid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.sid_trans.set_flags(db.DB_DUP)
|
||||||
self.sid_trans.open(self.full_name, "sidtrans",
|
self.sid_trans.open(self.full_name, "sidtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.oid_trans = db.DB(self.env)
|
self.oid_trans = db.DB(self.env)
|
||||||
self.oid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.oid_trans.set_flags(db.DB_DUP)
|
||||||
self.oid_trans.open(self.full_name, "oidtrans",
|
self.oid_trans.open(self.full_name, "oidtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.rid_trans = db.DB(self.env)
|
self.rid_trans = db.DB(self.env)
|
||||||
self.rid_trans.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.rid_trans.set_flags(db.DB_DUP)
|
||||||
self.rid_trans.open(self.full_name, "ridtrans",
|
self.rid_trans.open(self.full_name, "ridtrans",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
|
|
||||||
self.eventnames = db.DB(self.env)
|
self.eventnames = db.DB(self.env)
|
||||||
self.eventnames.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.eventnames.set_flags(db.DB_DUP)
|
||||||
self.eventnames.open(self.full_name, "eventnames",
|
self.eventnames.open(self.full_name, "eventnames",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.repository_types = db.DB(self.env)
|
self.repository_types = db.DB(self.env)
|
||||||
self.repository_types.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.repository_types.set_flags(db.DB_DUP)
|
||||||
self.repository_types.open(self.full_name, "repostypes",
|
self.repository_types.open(self.full_name, "repostypes",
|
||||||
db.DB_HASH, flags=table_flags)
|
db.DB_HASH, flags=table_flags)
|
||||||
|
|
||||||
self.reference_map_primary_map = db.DB(self.env)
|
self.reference_map_primary_map = db.DB(self.env)
|
||||||
self.reference_map_primary_map.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.reference_map_primary_map.set_flags(db.DB_DUP)
|
||||||
self.reference_map_primary_map.open(self.full_name,
|
self.reference_map_primary_map.open(self.full_name,
|
||||||
"reference_map_primary_map",
|
"reference_map_primary_map",
|
||||||
db.DB_BTREE, flags=table_flags)
|
db.DB_BTREE, flags=table_flags)
|
||||||
|
|
||||||
self.reference_map_referenced_map = db.DB(self.env)
|
self.reference_map_referenced_map = db.DB(self.env)
|
||||||
self.reference_map_referenced_map.set_flags(db.DB_DUP|db.DB_TXN_NOT_DURABLE)
|
self.reference_map_referenced_map.set_flags(db.DB_DUP)
|
||||||
self.reference_map_referenced_map.open(self.full_name,
|
self.reference_map_referenced_map.open(self.full_name,
|
||||||
"reference_map_referenced_map",
|
"reference_map_referenced_map",
|
||||||
db.DB_BTREE, flags=table_flags)
|
db.DB_BTREE, flags=table_flags)
|
||||||
@ -1049,14 +1047,18 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
self.rmap_index += 1
|
self.rmap_index += 1
|
||||||
return index
|
return index
|
||||||
|
|
||||||
def transaction_begin(self,msg=""):
|
def transaction_begin(self,msg="",batch=False):
|
||||||
"""
|
"""
|
||||||
Creates a new Transaction tied to the current UNDO database. The
|
Creates a new Transaction tied to the current UNDO database. The
|
||||||
transaction has no effect until it is committed using the
|
transaction has no effect until it is committed using the
|
||||||
transaction_commit function of the this database object.
|
transaction_commit function of the this database object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return BdbTransaction(msg,self.undodb)
|
transaction = BdbTransaction(msg,self.undodb,batch)
|
||||||
|
if transaction.batch:
|
||||||
|
self.env.txn_checkpoint()
|
||||||
|
self.env.set_flags(db.DB_TXN_NOSYNC,1) # async txn
|
||||||
|
return transaction
|
||||||
|
|
||||||
def transaction_commit(self,transaction,msg):
|
def transaction_commit(self,transaction,msg):
|
||||||
|
|
||||||
@ -1075,6 +1077,7 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
self.txn.commit()
|
self.txn.commit()
|
||||||
if transaction.batch:
|
if transaction.batch:
|
||||||
self.env.txn_checkpoint()
|
self.env.txn_checkpoint()
|
||||||
|
self.env.set_flags(db.DB_TXN_NOSYNC,0) # sync txn
|
||||||
self.txn = None
|
self.txn = None
|
||||||
|
|
||||||
def undo(self):
|
def undo(self):
|
||||||
@ -1481,13 +1484,10 @@ class GrampsBSDDB(GrampsDbBase):
|
|||||||
|
|
||||||
|
|
||||||
class BdbTransaction(Transaction):
|
class BdbTransaction(Transaction):
|
||||||
def __init__(self,msg,db):
|
def __init__(self,msg,db,batch=False):
|
||||||
Transaction.__init__(self,msg,db)
|
Transaction.__init__(self,msg,db,batch)
|
||||||
self.reference_del = []
|
self.reference_del = []
|
||||||
self.reference_add = []
|
self.reference_add = []
|
||||||
if self.batch:
|
|
||||||
self.env.txn_checkpoint()
|
|
||||||
|
|
||||||
|
|
||||||
_attribute_conversion_9 = {
|
_attribute_conversion_9 = {
|
||||||
"Caste" : (Attribute.CASTE,""),
|
"Caste" : (Attribute.CASTE,""),
|
||||||
|
@ -1753,7 +1753,7 @@ class Transaction:
|
|||||||
Defines a group of database commits that define a single logical
|
Defines a group of database commits that define a single logical
|
||||||
operation.
|
operation.
|
||||||
"""
|
"""
|
||||||
def __init__(self,msg,db):
|
def __init__(self,msg,db,batch=False):
|
||||||
"""
|
"""
|
||||||
Creates a new transaction. A Transaction instance should not be created
|
Creates a new transaction. A Transaction instance should not be created
|
||||||
directly, but by the GrampsDbBase class or classes derived from
|
directly, but by the GrampsDbBase class or classes derived from
|
||||||
@ -1764,7 +1764,7 @@ class Transaction:
|
|||||||
self.db = db
|
self.db = db
|
||||||
self.first = None
|
self.first = None
|
||||||
self.last = None
|
self.last = None
|
||||||
self.batch = False
|
self.batch = batch
|
||||||
self.length = 0
|
self.length = 0
|
||||||
|
|
||||||
self.person_add = []
|
self.person_add = []
|
||||||
|
Loading…
Reference in New Issue
Block a user