PDO is coming, here's what you need to know

Just did a git up and so far it just worked™: no errors, no update screen, no issues updating feeds, no problems. If I was not reading this thread, I would not have noticed any changes whatsoever – well, apart from lots of git commit messages and files changed.

Thanks @fox

that’s the idea, yes :slight_smile:

I am now seeing this when fetching feeds -

www-data@vps327963:~$ /usr/bin/php /var/www/ttrss.info/update.php --feeds
[12:10:01/13586] Lock: update.lock
[12:10:01/13586] Scheduled 26 feeds to update…
[12:10:01/13586] Base feed: Twitter @NaturelsWeird
[12:10:01/13586] => 2017-12-14 09:53:57, 381 2
[12:10:02/13586] 1.3768 (sec)
[12:10:02/13586] Base feed: https://bridge.ttrss.info/?action=display&bridge=Twitter&u=Strange_Animals&format=Atom
[12:10:02/13586] => 2017-12-14 09:53:59, 367 2
PHP Fatal error: Uncaught exception ‘PDOException’ with message ‘There is no active transaction’ in /var/www/ttrss.info/classes/rssutils.php:1159
Stack trace:
#0 /var/www/ttrss.info/classes/rssutils.php(1159): PDO->commit()
#1 /var/www/ttrss.info/classes/rssutils.php(185): RSSUtils::update_rss_feed(‘367’, true, false)
#2 /var/www/ttrss.info/update.php(168): RSSUtils::update_daemon_common()
#3 {main}
thrown in /var/www/ttrss.info/classes/rssutils.php on line 1159

this means query failed during update, check system logs in preferences for database-related errors + stacktrace

there probably is one right before this error

e: also all feeds or this particular one etc etc you know the drill

i dunno, nothing changed with regard to hashes, it’s an entirely client thing (it’s a thing after # in page url) and has nothing to do with PDO changeover. the whole function happens in your browser.

The problem was that firefox crashed then restarted. I closed it, started again, and lo all is fine…

Mark’s issue is related to the perceptual hash plugin. if you are using it you need to update to latest revision which uses PDO and check if plugin schema is initialized.

Overall behavior change here is stricter error checking in general and specifically during feed updates which are now per-article transaction-locked. So for example plugin is unlikely to fail silently while feed is updated.

Yes , I disabled the phash plugin , ran the feed update again and no errors this time.
Thanks @fox

Hello,

everything works except login:
PHP message: PHP Fatal error: Uncaught Error: Call to a member function check_password() on null in /tt-rss/classes/pref/prefs.php:925
Stack trace:
#0 /tt-rss/include/functions.php(1091): Pref_Prefs::isdefaultpassword()
#1 /tt-rss/classes/rpc.php(327): make_init_params()
#2 /tt-rss/backend.php(123): RPC->sanityCheck()
#3 {main}
thrown in /tt-rss/classes/pref/prefs.php on line 925

I’m on OpenBSD with httpd and php-fpm.

that’s interesting. are you using single user mode or external authentication of some kind?

e: my guess would be single user mode

should be fixed by https://git.tt-rss.org/git/tt-rss/commit/9390ddeae2ed814bb89c15742ee7296046609d1e

I was using auth_ldap and switched back to auth_internal. SINGLE_USER_MODE is set to false.

Fixed the login page but can’t remember my credentials :grin:

Just updated and I’m getting this error.

[error] 26432#0: *1515 FastCGI sent in stderr: “PHP message: PHP Parse error: syntax error, unexpected ‘$authenticator’ (T_VARIABLE) in /var/www/ttrss/classes/pref/prefs.php on line 925”

mm could be because of the just merged pull request

I’ll take a look in an hour or so, you can do git checkout to the previous commit until then

Just did a git reset back to the “minor css updates” commit and I get the same error so it isn’t that.

should be the one about single user mode

Ah-ha. The single user commit is actually after the one I reset back to. But I may not have reset it properly. I just did a reset --hard and now ttrss has loaded succesfully. So yes it’s one of those latest commits doing it.

Also (not hijacking other thread) in regards to the fever API plugin. It is broken, but I expected that. Hopefully someone can fix it one day but I just won’t use it for the moment.

"PHP message: PHP Notice: Legacy connect requested to pgsql in /var/www/ttrss/classes/db.php on line 22
PHP message: PHP Fatal error: Uncaught Error: Call to a member function query() on null in /var/www/ttrss/plugins.local/repos/fever/fever/fever_api.php:149

well the PR fix has been submitted so i guess this should work now

re: fever plugin and maybe others like it

i guess there’s a change that legacy database connection is not initialized automatically for the plugins now. regardless, this should be a very easy one line fix. somewhere in init() there should be first mention of $this->dbh or something like that, just put $this->dbh = Db::get() before it and it should work.

Updated again and it is working fine now with the latest PR. Thanks.

I can’t see any line like that in the init.php. There are tons of lines with that in the main fever_api.php file though. If you want to mock the source code it’s here. tinytinyrss-fever-plugin/fever at master · dasmurphy/tinytinyrss-fever-plugin · GitHub

oh, it’s a handler, then it should be assigned in the constructor.

(fever_api.php)

function __construct() {
    $this->dbh = Db::get();
}

this would probably work

e: the code is legit not very good btw, even worse than mine