/** * @return CarefulDatabaseRunner **/ public function rollback() { if ($this->running) { try { $this->transaction->rollback(); } catch (DatabaseException $e) { // keep silence } $this->running = false; } return $this; }
public function testRollbackInt() { //setup $db = $this->spawnDb(array('savepointBegin' => 1, 'savepointRollback' => 1, 'inTransaction' => true)); //execute $transaction = InnerTransaction::begin($db); $transaction->rollback(); //test Exception on second commit try { $transaction->commit(); $this->fail('expecting exception on second transaction commit'); } catch (WrongStateException $e) { /* all ok */ } }
public function run() { Assert::isTrue(!is_null($this->dao) || !is_null($this->db), 'set first dao or db'); Assert::isNotNull($this->function, 'set first function'); $transaction = InnerTransaction::begin($this->dao ?: $this->db, $this->level, $this->mode); try { $result = call_user_func_array($this->function, func_get_args()); $transaction->commit(); return $result; } catch (Exception $e) { $transaction->rollback(); if ($this->exceptionFunction) { $args = func_get_args(); array_unshift($args, $e); return call_user_func_array($this->exceptionFunction, $args); } throw $e; } }