def commit(self, sub=_marker): if sub is _marker: sub = None else: from ZODB.utils import deprecated37 deprecated37("subtransactions are deprecated; use " "transaction.savepoint() instead of " "transaction.commit(1)") return self.get().commit(sub, deprecation_wng=False)
def abort(self, sub=_marker): if sub is _marker: sub = None else: from ZODB.utils import deprecated37 deprecated37("subtransactions are deprecated; use " "sp.rollback() instead of " "transaction.abort(1), where `sp` is the " "corresponding savepoint captured earlier") return self.get().abort(sub, deprecation_wng=False)
def abort(self, subtransaction=_marker, deprecation_wng=True): if subtransaction is _marker: subtransaction = 0 elif deprecation_wng: from ZODB.utils import deprecated37 deprecated37("subtransactions are deprecated; use " "sp.rollback() instead of " "transaction.abort(1), where `sp` is the " "corresponding savepoint captured earlier") if subtransaction: # TODO deprecate subtransactions. if not self._subtransaction_savepoint: raise interfaces.InvalidSavepointRollbackError if self._subtransaction_savepoint.valid: self._subtransaction_savepoint.rollback() # We're supposed to be able to call abort(1) multiple # times without additional effect, so mark the subtxn # savepoint invalid now. self._subtransaction_savepoint.transaction = None assert not self._subtransaction_savepoint.valid return if self._savepoint2index: self._invalidate_all_savepoints() self._synchronizers.map(lambda s: s.beforeCompletion(self)) tb = None for rm in self._resources: try: rm.abort(self) except: if tb is None: t, v, tb = sys.exc_info() self.log.error("Failed to abort resource manager: %s", rm, exc_info=sys.exc_info()) if self._manager: self._manager.free(self) self._synchronizers.map(lambda s: s.afterCompletion(self)) self.log.debug("abort") if tb is not None: raise t, v, tb
def commit(self, subtransaction=_marker, deprecation_wng=True): if subtransaction is _marker: subtransaction = 0 elif deprecation_wng: from ZODB.utils import deprecated37 deprecated37("subtransactions are deprecated; instead of " "transaction.commit(1), use " "transaction.savepoint(optimistic=True) in " "contexts where a subtransaction abort will never " "occur, or sp=transaction.savepoint() if later " "rollback is possible and then sp.rollback() " "instead of transaction.abort(1)") if self._savepoint2index: self._invalidate_all_savepoints() if subtransaction: # TODO deprecate subtransactions self._subtransaction_savepoint = self.savepoint(optimistic=True) return if self.status is Status.COMMITFAILED: self._prior_operation_failed() # doesn't return self._callBeforeCommitHooks() self._synchronizers.map(lambda s: s.beforeCompletion(self)) self.status = Status.COMMITTING try: self._commitResources() self.status = Status.COMMITTED except: t, v, tb = self._saveAndGetCommitishError() self._callAfterCommitHooks(status=False) raise t, v, tb else: if self._manager: self._manager.free(self) self._synchronizers.map(lambda s: s.afterCompletion(self)) self._callAfterCommitHooks(status=True) self.log.debug("commit")
def commit(self, subtransaction=_marker, deprecation_wng=True): if subtransaction is _marker: subtransaction = 0 elif deprecation_wng: from ZODB.utils import deprecated37 deprecated37("subtransactions are deprecated; instead of " "transaction.commit(1), use " "transaction.savepoint(optimistic=True) in " "contexts where a subtransaction abort will never " "occur, or sp=transaction.savepoint() if later " "rollback is possible and then sp.rollback() " "instead of transaction.abort(1)") if self._savepoint2index: self._invalidate_all_savepoints() if subtransaction: # TODO deprecate subtransactions self._subtransaction_savepoint = self.savepoint(optimistic=True) return if self.status is Status.COMMITFAILED: self._prior_operation_failed() # doesn't return self._callBeforeCommitHooks() self._synchronizers.map(lambda s: s.beforeCompletion(self)) self.status = Status.COMMITTING try: self._commitResources() except: self._saveCommitishError() # This raises! self.status = Status.COMMITTED if self._manager: self._manager.free(self) self._synchronizers.map(lambda s: s.afterCompletion(self)) self.log.debug("commit")