Tiny Tiny RSS: Community

Issue since Readability update

it could be a good idea to dump entire article XML somewhere (i.e. with file_put_contents) so that we could train readability on it later and see if it crashes

sorry about the 525. i’ve updated docker-ce and discourse, uh, didn’t take it well. i had to rebuild the container and since it’s such an overbloated monstrosity it always takes forever.

1 Like

Definitely, but I’ve used a lot of forum software and like Discourse the best. I also see other sites moving to it.

… and away from it. Well, sorta; we were told to FOAD by Jeff.

Whoops. Sorry I’ve not responded. I’ve just pulled the latest git code so I’ll see if the try/catch solves the problem and watch the update log for a few days. FYI I use FreeBSD, so yes I know it’s not very mainstream, but it is still server tier :slight_smile:

Yeah what may have been helpful in this case is if the feed and maybe the entry that crashed was shown in the log. Because the crash happened before any logging it’s difficult to see which one caused it. But thanks for reminding me about the feed debugger. I’ll try that on each feed one at a time if I still get the same problem.

Just had the error happen again after one week where all feeds stopped updating except ISP Review. Which just happens to be mentioned in the log again before the crash exactly the same as last time. Though when I went into the feed debugger with f+D and forced a refresh it all loaded without a problem. And now everything is working fine again. So it seems whatever caused the problem is then fixed by forcing a refetch/rehash.

[07:30:57/55805] Base feed: http://www.ispreview.co.uk/index.php/feed
[07:30:57/55805] => 2019-03-05 06:51:17.549093, 56 2
PHP Fatal error: Uncaught TypeError: Argument 1 passed to iterator_to_array() must implement interface Trav
ersable, null given in /usr/www/ttrss/vendor/andreskrey/Readability/Nodes/NodeTrait.php:324
Stack trace:
#0 /usr/www/ttrss/vendor/andreskrey/Readability/Nodes/NodeTrait.php(324): iterator_to_array(NULL)
#1 /usr/www/ttrss/vendor/andreskrey/Readability/Nodes/NodeTrait.php(421): andreskrey\Readability\N
#2 /usr/www/ttrss/vendor/andreskrey/Readability/Readability.php(1270): andreskrey\Readability\Node
#3 /usr/www/ttrss/vendor/andreskrey/Readability/Readability.php(1166): andreskrey\Readability\Read
#4 /usr/www/ttrss/vendor/andreskrey/Readability/Readability.php(155): andreskrey\Readability\Reada
#5 /usr/www/ttrss/plugins/af_readability/init.php(188): andreskrey\Readability\Readabi in /usr/www/ttrss/vendor/andreskrey/Readability/Nodes/NodeTrait.php on line 324

congrats, instead of dumping the database, saving the XML somehow, or at least doing something to help us reproduce it, you decided to post the exception again. well done.

arch users, ladies and gentlemen. again and again.

Hi, new TTRSS user here

Imported my feeds via OPML from another reader. Also getting the Readability error mentioned

The initial update ran fine with readability on for all feeds. Subsequent feed updates started triggering the issue.

Most recent example is from The Register. Was working great for the whole 4 days I’ve had TTRSS, but just now bombed out. I disabled Readability for the Register and let the feed update run, and there was just 1 new article which was this one:


So is there something within this article which is screwing Readability? The atom feed is here http://www.theregister.co.uk/headlines.atom

I turned Readability back on for the Register and it hasn’t bombed out

Also regarding https://github.com/andreskrey/readability.php/issues/79 where Andreskrey says “Maybe you can put a breakpoint before triggering Readability and dump the HTML content?” is this possible? I’m not a dev but happy to dump my DB or whatever is needed

tldr: please report issues with readability to readability developers.

you didn’t even think to specify what php version on what platform you’re running in your largely useless “me too” post, i’m not going to waste a week spoonfeeding you because of a third party library i didn’t write nor support. you’ll have to do your homework yourself.

anyway, new rules for this issue:

  1. if you run into it and can figure out why it happens, submit a PR, preferably to developers of readability, but if its a tt-rss problem, to me. i don’t know how this could be a tt-rss problem since all its doing is passing XML to the class but whatever, anything is possible.
  2. if you want to bump this thread with a “me too”, the only thing you’ll get is a probation

i’m not wasting any more time on this.

when I went into the feed debugger with f+D and forced a refresh it all loaded without a problem. And now everything is working fine again.

i have the same problem
can u teach me how to ‘’ feed debugger with f+D ‘’ to fix the problem? thx a lot.

It means fetch the feed using debug mode. You go into the feed and then press the f and shift-D keys. The feed is successfully fetched and processed then. My guess is there’s something slightly different in the code paths between the main feed updater and the debug mode.

I am now agreeing with fox though. I took a look at the code and can see that he’s simply importing a 3rd party library and so this needs solving by the person that wrote the library. Unfortunately I can’t reproduce it in a way where I can just provide a broken feed. Because as I said, it breaks, you fetch the feed another way, and then it works fine for a week before maybe breaking again.

I have worked around this now by reverting the commit that upgraded the library and I’m rebasing the old version on top of any new commits. If the library gets upgraded again then I’ll test it. In the meantime, like fox, I’ve lost interest in caring about it.

btw actual readability library is now moved to the plugin so it’s possible to make af_readability_old or something and use that instead, i’ve made that change with this particular issue in mind.

Ahh that’s useful. Yes I’ve just done this instead. Created plugins.local/af_readability_old and then removed my revert with a reset --hard. Seems to work :slight_smile: If the library gets upgraded again in the future I’ll retest it but until then this will do.

I saw that the readability plugin was updated this week and so I switched back to using the proper plugin. So far it’s worked without any problems. So it’s possible the new version of the library fixed the problem that I had with the last version.

yeah, git changelog mentioned something related to php 7.3 compatibility, i’ve thought about posting here asking for feedback but got distracted and forgot.

Looks like a bug in plugin code or PHP syntax. Some feeds (e.g. ycombinator) have no meta charset tag so when you extract it, you’ve got an empty string. At the next line you call mb_convert_encoding and if the last argument is missing, then PHP throws an error. Below is the patch proposed to fix the error. IWFM for last 2 days.

P.S. Does it make sense to create PR/open issue at ttrss git repository?
P.P.S. I’m not a PHP developer so there might be a better solution.

--- init.php.old 2019-09-10 09:47:14.008953145 +1200
+++ init.php    2019-09-10 09:55:23.080483046 +1200
@@ -179,7 +179,11 @@
                        // this is the worst hack yet :(
                        if (strtolower($tmpdoc->encoding) != 'utf-8') {
                                $tmp = preg_replace("/<meta.*?charset.*?\/?>/i", "", $tmp);
-                               $tmp = mb_convert_encoding($tmp, 'utf-8', $tmpdoc->encoding);
+                               if (empty($tmpdoc->encoding)) {
+                                       $tmp = mb_convert_encoding($tmp, 'utf-8');
+                               } else {
+                                       $tmp = mb_convert_encoding($tmp, 'utf-8', $tmpdoc->encoding);
+                               }
                        try {

sure, post your gogs username and i’ll give you necessary permissions.

Username is the same as here, i.e. trap000d

alright, you should be able to clone stuff now.

See PR #120

Arrrrrrgh. At least 20 characters, no links

thanks, i’ll take a look in a few days when i’m back in town.