diff options
author | Andrew Dolgov <[email protected]> | 2018-11-03 15:00:58 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2018-11-03 15:00:58 +0300 |
commit | 2c940c4861b8d059e9de65826c8a0c48a025c519 (patch) | |
tree | 2d86698a8c2a6fcf00f554d1d64fd6b679d8c2c2 /classes/rssutils.php | |
parent | 5f66f872b6ddf5d3b70504fd870e6c4de69c1d19 (diff) |
better handle PDOExceptions during open transaction in feed update
Diffstat (limited to 'classes/rssutils.php')
-rwxr-xr-x | classes/rssutils.php | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/classes/rssutils.php b/classes/rssutils.php index 094b29408..3c49ef1e4 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -50,8 +50,8 @@ class RSSUtils { if (!$tmph->fetch()) { $tmph = $pdo->prepare("INSERT INTO ttrss_feedbrowser_cache - (feed_url, site_url, title, subscribers) - VALUES + (feed_url, site_url, title, subscribers) + VALUES (?, ?, ?, ?)"); $tmph->execute([$feed_url, $site_url, $title, $subscribers]); @@ -192,6 +192,13 @@ class RSSUtils { RSSUtils::update_rss_feed($tline["id"], true, false); } catch (PDOException $e) { Logger::get()->log_error(E_USER_NOTICE, $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString()); + + try { + $pdo->rollback(); + } catch (PDOException $e) { + // it doesn't matter if there wasn't actually anything to rollback, PDO Exception can be + // thrown outside of an active transaction during feed update + } } _debug_suppress(false); @@ -333,12 +340,12 @@ class RSSUtils { $sth = $pdo->prepare("SELECT id,update_interval,auth_login, feed_url,auth_pass,cache_images, mark_unread_on_update, owner_uid, - auth_pass_encrypted, feed_language, - last_modified, - ".SUBSTRING_FOR_DATE."(last_unconditional, 1, 19) AS last_unconditional + auth_pass_encrypted, feed_language, + last_modified, + ".SUBSTRING_FOR_DATE."(last_unconditional, 1, 19) AS last_unconditional FROM ttrss_feeds WHERE id = ?"); $sth->execute([$feed]); - + if ($row = $sth->fetch()) { $owner_uid = $row["owner_uid"]; @@ -852,7 +859,7 @@ class RSSUtils { $usth = $pdo->prepare( "INSERT INTO ttrss_entries - (title, + (title, guid, link, updated, @@ -921,7 +928,7 @@ class RSSUtils { _debug("user record FOUND: RID: $entry_ref_id, IID: $entry_int_id", $debug_enabled); } else { - + _debug("user record not found, creating...", $debug_enabled); if ($score >= -500 && !RSSUtils::find_article_filter($article_filters, 'catchup') && !$entry_force_catchup) { @@ -984,7 +991,7 @@ class RSSUtils { num_comments = :num_comments, plugin_data = :plugin_data, author = :author, - lang = :lang + lang = :lang WHERE id = :id"); $params = [":title" => $entry_title, |