[Erp5-report] r17494 - /erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Nov 9 16:02:49 CET 2007


Author: aurel
Date: Fri Nov  9 16:02:49 2007
New Revision: 17494

URL: http://svn.erp5.org?rev=17494&view=rev
Log:
do no recall reindeObject when object goes in archive except if
explicitly specified, thus we index everything at one time preventing
from retrieving same objects many times from different node

Modified:
    erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py

Modified: erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py?rev=17494&r1=17493&r2=17494&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py (original)
+++ erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py Fri Nov  9 16:02:49 2007
@@ -686,7 +686,8 @@
     """ wrapper around catalog """
     self.catalogObjectList([obj], sql_catalog_id=sql_catalog_id)
 
-  def catalogObjectList(self, object_list, sql_catalog_id=None, disable_archive=0, **kw):
+  def catalogObjectList(self, object_list, sql_catalog_id=None, disable_archive=0,
+                        immediate_reindex_archive=1, **kw):
     """Catalog a list of objects.
     """
     catalog = self.getSQLCatalog(sql_catalog_id)
@@ -783,28 +784,33 @@
           # if we reindex in current catalog, do not relaunch an activity for this
           continue
         d = catalog_dict[catalog_id]
+        # build the wrapped object list
+        wrapped_object_list_2 = []
+        for obj in d['obj']:
+          try:
+            wrap_obj = self.wrapObject(obj, sql_catalog_id=catalog_id)
+          except ConflictError:
+            raise
+          except:
+            LOG('WARNING ZSQLCatalog', 0, 'wrapObject failed on the object %r' % (obj,), error=sys.exc_info())
+            failed_object_list.append(obj)
+          wrapped_object_list_2.append(wrap_obj)
+
         # hot_reindexing is True when creating an object during a hot reindex, in this case, we don't want
         # to reindex it in destination catalog, it will be recorded an play only once
         if not hot_reindexing and self.hot_reindexing_state != HOT_REINDEXING_DOUBLE_INDEXING_STATE and \
                self.destination_sql_catalog_id == catalog_id:
           destination_catalog = self.getSQLCatalog(self.destination_sql_catalog_id)
-          # wrap all objects
-          wrapped_object_list_2 = []
-          for obj in d['obj']:
-            try:
-              wrap_obj = self.wrapObject(obj, sql_catalog_id=catalog_id)
-            except ConflictError:
-              raise
-            except:
-              LOG('WARNING ZSQLCatalog', 0, 'wrapObject failed on the object %r' % (obj,), error=sys.exc_info())
-              failed_object_list.append(obj)
-            wrapped_object_list_2.append(wrap_obj)
           # reindex objects in destination catalog
           destination_catalog.catalogObjectList(wrapped_object_list_2, **kw)
         else:
-          for obj in d['obj']:
-            obj._reindexObject(sql_catalog_id=catalog_id, activate_kw = \
-                              {'priority': d['priority']}, disable_archive=1, **kw)
+          archive_catalog = self.getSQLCatalog(catalog_id)
+          if immediate_reindex_archive:
+            archive_catalog.catalogObjectList(wrapped_object_list_2, **kw)
+          else:
+            for obj in d['obj']:
+              obj._reindexObject(sql_catalog_id=catalog_id, activate_kw = \
+                                 {'priority': d['priority']}, disable_archive=1, **kw)
     
     if catalog is not None:
       if len(wrapped_object_list):




More information about the Erp5-report mailing list