[Zope-Checkins] CVS: Products/PluginIndexes/common -
UnIndex.py:1.20.2.8
Tres Seaver
tseaver at palladion.com
Tue Jul 5 10:10:42 EDT 2005
Update of /cvs-repository/Products/PluginIndexes/common
In directory cvs.zope.org:/tmp/cvs-serv5467/lib/python/Products/PluginIndexes/common
Modified Files:
Tag: Zope-2_7-branch
UnIndex.py
Log Message:
Collector #1832: UnIndex swallowed ConflictErrors (bare 'except:' is evil).
=== Products/PluginIndexes/common/UnIndex.py 1.20.2.7 => 1.20.2.8 ===
--- Products/PluginIndexes/common/UnIndex.py:1.20.2.7 Fri May 27 09:03:50 2005
+++ Products/PluginIndexes/common/UnIndex.py Tue Jul 5 10:10:11 2005
@@ -28,6 +28,7 @@
from BTrees.IIBTree import IITreeSet, IISet, union, intersection
from OFS.SimpleItem import SimpleItem
import BTrees.Length
+from ZODB.POSException import ConflictError
from Products.PluginIndexes.common.util import parseIndexRequest
from Products.PluginIndexes.common import safe_callable
@@ -99,7 +100,8 @@
self.indexed_attrs = ia.split(',')
else:
self.indexed_attrs = list(ia)
- self.indexed_attrs = [ attr.strip() for attr in self.indexed_attrs if attr ]
+ self.indexed_attrs = [ attr.strip()
+ for attr in self.indexed_attrs if attr ]
if not self.indexed_attrs:
self.indexed_attrs = [id]
@@ -132,6 +134,7 @@
if len(s) == 1:
try: return s[0] # convert to int
+ except ConflictError: raise
except: pass # This is just an optimization.
return IITreeSet(s)
@@ -196,6 +199,8 @@
del self._index[entry]
try: self.__len__.change(-1)
except AttributeError: pass # pre-BTrees-module instance
+ except ConflictError:
+ raise
except AttributeError:
# index row is an int
del self._index[entry]
@@ -240,9 +245,7 @@
def index_object(self, documentId, obj, threshold=None):
""" wrapper to handle indexing of multiple attributes """
- # needed for backward compatibility
- try: fields = self.indexed_attrs
- except: fields = [ self.id ]
+ fields = self.getIndexSourceNames()
res = 0
for attr in fields:
@@ -268,6 +271,8 @@
if datum is _marker:
try:
del self._unindex[documentId]
+ except ConflictError:
+ raise
except:
LOG('UnIndex', ERROR,
'Should not happen: oldDatum was there, now its not,'
@@ -311,6 +316,8 @@
try:
del self._unindex[documentId]
+ except ConflictError:
+ raise
except:
LOG('UnIndex', ERROR, 'Attempt to unindex nonexistent document'
' with id %s' % documentId)
@@ -429,11 +436,7 @@
def getIndexSourceNames(self):
""" return sequence of indexed attributes """
-
- try:
- return self.indexed_attrs
- except:
- return [ self.id ]
+ return getattr(self, 'indexed_attrs', [self.id])
def uniqueValues(self, name=None, withLengths=0):
"""\
More information about the Zope-Checkins
mailing list