[Zope] Database connectors
Maciej Wisniowski
maciej.wisniowski at coig.katowice.pl
Fri Nov 17 07:37:23 EST 2006
> Dario Lopez-Kästen said the following on 11/17/2006 01:07 PM:
>>> Do you know these reasons?
>> yes, we sometimes get deadlocks in the database, net outages and general
>> misbehavior of DCO2.
>
> Sorry, i am casting too much blame on DCO2 here; in reality we have a
> combination of zope2.6, large file uploads and downloads, not
> necessarily good code on our end, AND quite a lot of DCO2 strangeness.
You say deadlocks... Do you use DCOracle2 Stored Procedures?? If so,
then there is a bug in it's definition that may cause Oracle deadlocks.
In SP.py there is function __call__ and code like:
try:
# Note, this does not do result promotion like the DA query will
# which is probably bad. OracleDates in particular look like
# DateTimes but arent at all the same!
results = apply(self._v_proc,args,kw)
return self._lobConvert(self._v_db, results)
except:
self._v_proc = None
raise # Reraise error
AFAIR you may change this to:
except:
self._abort()
self._v_proc = None
raise # Reraise error
Possibly you may need to change these too:
def _abort(self):
self.db.rollback()
to:
def _abort(self):
if self.db:
self.db.rollback()
Otherwise, when during request you've called only one stored procedure
(no other zsqlmethods etc.) and this SP raised an exception, there
may be no rollback to Oracle.
--
Maciej Wisniowski
More information about the Zope
mailing list