From: Benny M. <ben...@gm...> - 2011-01-31 22:00:53
|
Ok, The major patchset contributed by Michael Nauta has been committed. There are still some issues, and more might follow. As the commit messag says: =============== 4198: Person view does not remove a row correctly when two people are merged. This is a major patch by Michael Nauta. It means all writes happen immediately to bsddb, and the bsddb rollback is used on a crash. Transaction is no longer used to store changes and do them on commit. Undo database is set on end. At the same time with statement is used throughout for transactions At the same time, the original bug in merge code should be fixed Still some issues, that will be ironed out ============== I already found one bug, see http://www.gramps-project.org/bugs/view.php?id=4198 The things to watch out for however are lockups due to this change, and signal messages. So, we are again all guinea pigs for a while. I'll do further directed tests myself next days (eg making database crash). Benny |
From: Benny M. <ben...@gm...> - 2011-01-31 22:07:26
|
PLUGIN WRITERS, ALL CODERS Update non-official plugins for this change! For plugins that do changes, this means that some code might need changing in the gramps-addons you maintain. Specifically use with for transactions, see eg the change in one of the tools: $ svn diff -r PREV src/plugins/tool/ChangeTypes.py Index: src/plugins/tool/ChangeTypes.py =================================================================== --- src/plugins/tool/ChangeTypes.py (revision 16522) +++ src/plugins/tool/ChangeTypes.py (working copy) @@ -110,23 +110,23 @@ modified = 0 - self.trans = self.db.transaction_begin("",batch=True) - self.db.disable_signals() - if not cli: - progress = ProgressMeter(_('Analyzing Events'),'') - progress.set_pass('',self.db.get_number_of_events()) + with self.db.transaction_begin(_('Change types'), batch=True + ) as self.trans: + self.db.disable_signals() + if not cli: + progress = ProgressMeter(_('Analyzing Events'),'') + progress.set_pass('',self.db.get_number_of_events()) - for event_handle in self.db.get_event_handles(): - event = self.db.get_event_from_handle(event_handle) - if event.get_type().xml_str() == fromtype: - event.type.set_from_xml_str(totype) - modified += 1 - self.db.commit_event(event,self.trans) + for event_handle in self.db.get_event_handles(): + event = self.db.get_event_from_handle(event_handle) + if event.get_type().xml_str() == fromtype: + event.type.set_from_xml_str(totype) + modified += 1 + self.db.commit_event(event,self.trans) + if not cli: + progress.step() if not cli: - progress.step() - if not cli: - progress.close() - self.db.transaction_commit(self.trans,_('Change types')) + progress.close() self.db.enable_signals() self.db.request_rebuild() So you see that things like: self.trans = self.db.transaction_begin("",batch=True) are removed, and must be replaced with with self.db.transaction_begin(_('Change types'), batch=True ) as self.trans: The reason is that when the scope of the with is left without the proper end, a database abort is automatically called, which is _required_ now! Hence, it is not needed to call self.db.transaction_commit(... anymore 2011/1/31 Benny Malengier <ben...@gm...> > Ok, > > The major patchset contributed by Michael Nauta has been committed. There > are still some issues, and more might follow. > As the commit messag says: > =============== > 4198: Person view does not remove a row correctly when two people are > merged. > > This is a major patch by Michael Nauta. It means all writes happen > immediately to bsddb, and the bsddb > rollback is used on a crash. Transaction is no longer used to store changes > and do them on commit. > Undo database is set on end. > At the same time with statement is used throughout for transactions > At the same time, the original bug in merge code should be fixed > Still some issues, that will be ironed out > ============== > > I already found one bug, see > http://www.gramps-project.org/bugs/view.php?id=4198 > > The things to watch out for however are lockups due to this change, and > signal messages. So, we are again all guinea pigs for a while. I'll do > further directed tests myself next days (eg making database crash). > > Benny > |