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