summaryrefslogtreecommitdiff
path: root/classes/rssutils.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-11-03 15:00:58 +0300
committerAndrew Dolgov <[email protected]>2018-11-03 15:00:58 +0300
commit2c940c4861b8d059e9de65826c8a0c48a025c519 (patch)
tree2d86698a8c2a6fcf00f554d1d64fd6b679d8c2c2 /classes/rssutils.php
parent5f66f872b6ddf5d3b70504fd870e6c4de69c1d19 (diff)
better handle PDOExceptions during open transaction in feed update
Diffstat (limited to 'classes/rssutils.php')
-rwxr-xr-xclasses/rssutils.php25
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,