Beispiel #1
0
 public function save()
 {
     SV_DeadlockAvoidance_DataWriter::enterTransaction();
     $ret = false;
     try {
         $ret = parent::save();
         return $ret;
     } finally {
         SV_DeadlockAvoidance_DataWriter::exitTransaction($ret);
     }
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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;
 }