Ejemplo n.º 1
0
 def commit(self):
     from trytond.cache import Cache
     try:
         if self._datamanagers:
             for datamanager in self._datamanagers:
                 datamanager.tpc_begin(self)
             for datamanager in self._datamanagers:
                 datamanager.commit(self)
             for datamanager in self._datamanagers:
                 datamanager.tpc_vote(self)
         # ABD: Some datamanager may returns transactions which should
         # be committed just before the main transaction
         for sub_transaction in self._sub_transactions:
             # Does not handle TPC or recursive transaction commit
             # This just commits the sub transactions to avoid any crashes
             # which could occur otherwise.
             sub_transaction.connection.commit()
         self.started_at = self.monotonic_time()
         Cache.commit(self)
         self.connection.commit()
     except Exception:
         self.rollback()
         raise
     else:
         try:
             for datamanager in self._datamanagers:
                 datamanager.tpc_finish(self)
         except Exception:
             logger.critical(
                 'A datamanager raised an exception in'
                 ' tpc_finish, the data might be inconsistant',
                 exc_info=True)
Ejemplo n.º 2
0
 def commit(self):
     from trytond.cache import Cache
     try:
         if self._datamanagers:
             for datamanager in self._datamanagers:
                 datamanager.tpc_begin(self)
             for datamanager in self._datamanagers:
                 datamanager.commit(self)
             for datamanager in self._datamanagers:
                 datamanager.tpc_vote(self)
         self.started_at = self.monotonic_time()
         Cache.commit(self)
         self.connection.commit()
     except Exception:
         self.rollback()
         raise
     else:
         try:
             for datamanager in self._datamanagers:
                 datamanager.tpc_finish(self)
         except Exception:
             logger.critical(
                 'A datamanager raised an exception in'
                 ' tpc_finish, the data might be inconsistant',
                 exc_info=True)