# HG changeset patch # User Sylvain Thénault # Date 1277964783 -7200 # Node ID 4e28f03651d4c336f077863f905273ae82660412 # Parent df7608ecea29ac3aec222200f9b1a8b07d780c90 [schema migration] avoid potential duplicated ft reindexation due to multiple UpdateFTIndexOp operations by using set_operation diff -r df7608ecea29 -r 4e28f03651d4 hooks/syncschema.py --- a/hooks/syncschema.py Wed Jun 30 18:47:10 2010 +0200 +++ b/hooks/syncschema.py Thu Jul 01 08:13:03 2010 +0200 @@ -251,12 +251,11 @@ return session = self.session if 'fulltext_container' in self.values: - ftiupdates = session.transaction_data.setdefault( - 'fti_update_etypes', set()) for subjtype, objtype in rschema.rdefs: - ftiupdates.add(subjtype) - ftiupdates.add(objtype) - UpdateFTIndexOp(session) + hook.set_operation(self._cw, 'fti_update_etypes', subjtype, + UpdateFTIndexOp) + hook.set_operation(self._cw, 'fti_update_etypes', objtype, + UpdateFTIndexOp) if not 'inlined' in self.values: return # nothing to do inlined = self.values['inlined'] @@ -523,9 +522,8 @@ sql = adbh.sql_set_null_allowed(table, column, coltype, notnull) session.system_sql(sql) if 'fulltextindexed' in self.values: - UpdateFTIndexOp(session) - session.transaction_data.setdefault( - 'fti_update_etypes', set()).add(etype) + hook.set_operation(self._cw, 'fti_update_etypes', etype, + UpdateFTIndexOp) class SourceDbCWConstraintAdd(hook.Operation): @@ -1184,7 +1182,7 @@ def postcommit_event(self): session = self.session source = session.repo.system_source - to_reindex = session.transaction_data.get('fti_update_etypes', ()) + to_reindex = session.transaction_data.pop('fti_update_etypes', ()) self.info('%i etypes need full text indexed reindexation', len(to_reindex)) schema = self.session.repo.vreg.schema