public function save() { SV_DeadlockAvoidance_DataWriter::enterTransaction(); $ret = false; try { $ret = parent::save(); return $ret; } finally { SV_DeadlockAvoidance_DataWriter::exitTransaction($ret); } }
public function mergePosts(array $posts, array $threads, $targetPostId, $newMessage, $options = array()) { // hoist bits out of the mergePosts Transaction SV_DeadlockAvoidance_DataWriter::enterTransaction(); $ret = false; try { $ret = parent::mergePosts($posts, $threads, $targetPostId, $newMessage, $options); } finally { SV_DeadlockAvoidance_DataWriter::exitTransaction($ret); } return $ret; }
public function likeContent($contentType, $contentId, $contentUserId, $likeUserId = null, $likeDate = null) { // hoist bits out of the Like Transaction SV_DeadlockAvoidance_DataWriter::enterTransaction(); $ret = false; try { $ret = parent::likeContent($contentType, $contentId, $contentUserId, $likeUserId, $likeDate); } catch (Zend_Db_Statement_Mysqli_Exception $e) { SV_DeadlockAvoidance_DataWriter::exitTransaction(false); @XenForo_Db::rollbackAll(); // something went wrong, retry if (stripos($e->getMessage(), "Deadlock found when trying to get lock; try restarting transaction") !== false) { SV_DeadlockAvoidance_DataWriter::enterTransaction(); $ret = parent::likeContent($contentType, $contentId, $contentUserId, $likeUserId, $likeDate); } else { throw $e; } } finally { SV_DeadlockAvoidance_DataWriter::exitTransaction($ret); } return $ret; }