You have convinced me....
Something silly is happening in the storage procedure handling of DCO2.
I've checked same function but with ZSQLMethod: select wyjatek() from dual In this case I have only one resource manager that is being aborted: 2006-11-22 06:34:04 INFO _transaction abort 2006-11-22 06:34:04 INFO _transaction [<MultiObjectResourceAdapter for <Products.DCOracle2.db.DB instance at 0xb6bee28c> at -1241336788>] --Return--
/usr/local/lib/python2.3/pdb.py(992)set_trace()->None -> Pdb().set_trace() (Pdb) n /opt/Zope/2.8.8/lib/python/transaction/_transaction.py(492)abort() -> for rm in self._resources: (Pdb) p self._resources [<MultiObjectResourceAdapter for <Products.DCOracle2.db.DB instance at 0xb6bee28c> at -1241336788>]
and everything is OK then -- Maciej Wisniowski