nextcloud / news

:newspaper: RSS/Atom feed reader
https://apps.nextcloud.com/apps/news
GNU Affero General Public License v3.0
865 stars 186 forks source link

[15.4.0] Slow folder browsing and app item sync with high database load #1322

Closed nRaecheR closed 3 years ago

nRaecheR commented 3 years ago

Explain the Problem

Since update from 15.3.2 to 15.4.0 browsing through the folders in the web interface or syncing the news from the Android News app takes significantly longer. The duration jumped from under a second to 10-15 seconds and the database consumes 100% of the CPU during that task.

Steps to Reproduce

  1. Update to News app 15.4.0
  2. Let the Android News App sync the unread items or browser through the folders in the NC Web-if.

System Information

Contents of nextcloud/data/nextcloud.log No output during browsing but a lot of these lines during fetch of feeds. ```json {"reqId":"4e3Kn9GOoBiSFZVkUDrj","level":3,"time":"2021-04-29T12:53:00+00:00","remoteAddr":"10.88.0.1","user":"Arne","app":"PHP","method":"GET","url":"/index.php/apps/news/api/v1-2/feeds/update?userId=Arne&feedId=26","message":{"Exception":"Error","Message":"mime_content_type(/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1): failed to open stream: No such file or directory at /var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php#339","Code":0,"Trace":[{"function":"onError","class":"OC\\Log\\ErrorHandler","type":"::","args":[2,"mime_content_type(/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1): failed to open stream: No such file or directory","/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php",339,{"feed":{"__class__":"FeedIo\\Feed"},"url":"http://blog.humblebundle.com/rss","favicon":"https://i0.wp.com/blog.humblebundle.com/wp-content/uploads/2019/09/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1","favicon_path":"/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1"}]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":339,"function":"mime_content_type","args":["/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1"]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":383,"function":"getFavicon","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":[{"__class__":"FeedIo\\Feed"},"http://blog.humblebundle.com/rss"]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":125,"function":"buildFeed","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":[{"__class__":"FeedIo\\Feed"},"http://blog.humblebundle.com/rss","http://blog.humblebundle.com/rss"]},{"file":"/var/www/html/custom_apps/news/lib/Service/FeedServiceV2.php","line":265,"function":"fetch","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":["http://blog.humblebundle.com/rss",false,null,null]},{"file":"/var/www/html/custom_apps/news/lib/Controller/FeedApiController.php","line":241,"function":"fetch","class":"OCA\\News\\Service\\FeedServiceV2","type":"->","args":[{"items":[],"id":26,"__class__":"OCA\\News\\Db\\Feed"}]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":218,"function":"update","class":"OCA\\News\\Controller\\FeedApiController","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":127,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\News\\Controller\\FeedApiController"},"update"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":157,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\News\\Controller\\FeedApiController"},"update"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":302,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\News\\Controller\\FeedApiController","update",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"news.feed_api.update"}]},{"file":"/var/www/html/lib/base.php","line":993,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/news/api/v1-2/feeds/update"]},{"file":"/var/www/html/index.php","line":37,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/lib/private/Log/ErrorHandler.php","Line":92,"CustomMessage":"--"},"userAgent":"Python-urllib/3.7","version":"21.0.1.1","id":"608aad99a59f3"} {"reqId":"4e3Kn9GOoBiSFZVkUDrj","level":3,"time":"2021-04-29T12:53:00+00:00","remoteAddr":"10.88.0.1","user":"Arne","app":"PHP","method":"GET","url":"/index.php/apps/news/api/v1-2/feeds/update?userId=Arne&feedId=26","message":{"Exception":"Error","Message":"copy(https://i0.wp.com/blog.humblebundle.com/wp-content/uploads/2019/09/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1): failed to open stream: Connection refused at /var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php#335","Code":0,"Trace":[{"function":"onError","class":"OC\\Log\\ErrorHandler","type":"::","args":[2,"copy(https://i0.wp.com/blog.humblebundle.com/wp-content/uploads/2019/09/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1): failed to open stream: Connection refused","/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php",335,{"feed":{"__class__":"FeedIo\\Feed"},"url":"http://blog.humblebundle.com/rss","favicon":"https://i0.wp.com/blog.humblebundle.com/wp-content/uploads/2019/09/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1","favicon_path":"/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1"}]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":335,"function":"copy","args":["https://i0.wp.com/blog.humblebundle.com/wp-content/uploads/2019/09/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1","/tmp/cropped-avatar_35dd6178bb08_128-3.png?fit=32%2C32&ssl=1"]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":383,"function":"getFavicon","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":[{"__class__":"FeedIo\\Feed"},"http://blog.humblebundle.com/rss"]},{"file":"/var/www/html/custom_apps/news/lib/Fetcher/FeedFetcher.php","line":125,"function":"buildFeed","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":[{"__class__":"FeedIo\\Feed"},"http://blog.humblebundle.com/rss","http://blog.humblebundle.com/rss"]},{"file":"/var/www/html/custom_apps/news/lib/Service/FeedServiceV2.php","line":265,"function":"fetch","class":"OCA\\News\\Fetcher\\FeedFetcher","type":"->","args":["http://blog.humblebundle.com/rss",false,null,null]},{"file":"/var/www/html/custom_apps/news/lib/Controller/FeedApiController.php","line":241,"function":"fetch","class":"OCA\\News\\Service\\FeedServiceV2","type":"->","args":[{"items":[],"id":26,"__class__":"OCA\\News\\Db\\Feed"}]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":218,"function":"update","class":"OCA\\News\\Controller\\FeedApiController","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":127,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\News\\Controller\\FeedApiController"},"update"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":157,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\News\\Controller\\FeedApiController"},"update"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":302,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\News\\Controller\\FeedApiController","update",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"news.feed_api.update"}]},{"file":"/var/www/html/lib/base.php","line":993,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/apps/news/api/v1-2/feeds/update"]},{"file":"/var/www/html/index.php","line":37,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/lib/private/Log/ErrorHandler.php","Line":92,"CustomMessage":"--"},"userAgent":"Python-urllib/3.7","version":"21.0.1.1","id":"608aad99a5a53"} ```
SMillerDev commented 3 years ago

Can you enable the slow query log for MariaDB and see if something shows up there when browsing?

nRaecheR commented 3 years ago

Sure, here's the output:

mysqld, Version: 10.5.9-MariaDB-1:10.5.9+maria~focal (mariadb.org binary distribution). started with:
Tcp port: 3306  Unix socket: /run/mysqld/mysqld.sock
Time            Id Command  Argument
# Time: 210429 13:29:36
# User@Host: nextclouddb[nextclouddb] @  [10.88.0.1]
# Thread_id: 72380  Schema: nextcloud  QC_hit: No
# Query_time: 13.064323  Lock_time: 0.000041  Rows_sent: 1  Rows_examined: 438425
# Rows_affected: 0  Bytes_sent: 6149
use nextcloud;
SET timestamp=1619702976;
SELECT `items`.* FROM `oc_news_items` `items` INNER JOIN `oc_news_feeds` `feeds` ON items.feed_id = feeds.id WHERE feeds.user_id = '<myusername>' ORDER BY `items`.`last_modified` DESC, `items`.`id` DESC LIMIT 1;
SMillerDev commented 3 years ago

Can you give me:

nRaecheR commented 3 years ago

Number of feeds: 94 Number of folders: 20 Maximum read count per feed: -1 Total unread items: 403

chrros95 commented 3 years ago

I had the same issue in the WebUI with the following stats:

During debugging I observed, that the query optimizer of my mariadb didn't use an index for the order by statement. By using the following code in the function newest(string $userId): Entity of lib/Db/ItemMapperV2.php the performance was increased to a satisfying level.

          $query = "SELECT `items`.* FROM (select * from `*PREFIX*news_items` group by `last_modified`,`id` ORDER BY `last_modified` DESC,`id` desc limit 1) as `items` INNER JOIN `*PREFIX*news_feeds` `feeds` ON `items`.`feed_id` = `feeds`.`id` where `feeds`.`user_id` =? ORDER BY `items`.`last_modified` DESC, `items`.`id` DESC LIMIT 1";
          $res = $this->db->executeQuery($query, [$userId]);
          $row = $res->fetch();
          $res->closeCursor();
          return $this->mapRowToEntity($row);
SMillerDev commented 3 years ago

If I remember correctly that makes the query break for PostgreSQL. Could both/either of you check how many items you have in total?

nRaecheR commented 3 years ago

I did a manual purge with purge-count 100 and now the news browsing is fast again. I think the line

 Query_time: 13.064323  Lock_time: 0.000041  Rows_sent: 1  Rows_examined: 438425

says, that there were 438425 read items not purged. I've misinterpreted the description for "Maximum read count per feed" in the Admin-UI. After consulting the readme at Github a value of 100 is more sane than -1 which seems to disable the purge of read items totally.

The question is why is this is problem with 5.4.0 and not with prior versions?

SMillerDev commented 3 years ago

Essentially all 15.x releases are to make the code go from the handcrafted, hard to maintain queries like this https://github.com/nextcloud/news/blob/15.3.2/lib/Db/ItemMapper.php#L427-L439 to actually tested and non-deprecated functions like https://github.com/nextcloud/news/blob/15.4.0/lib/Db/ItemMapperV2.php#L298-L309.

Apparently some are less performant, but at least they'll keep working with future nextcloud releases and that's a lot more important to me.

Grotax commented 3 years ago

says, that there were 438425 read items not purged. I've misinterpreted the description for "Maximum read count per feed" in the Admin-UI. After consulting the readme at Github a value of 100 is more sane than -1 which seems to disable the purge of read items totally.

If you have a suggestion for how the text in the admin-ui could be changed that would be very welcome. Although at least in german and english it actually says -1 disables this. If some day we have a new ui developer that could maybe done in a more fancy way.

chrros95 commented 3 years ago

Your response is totally reasonable and I respect your efforts. In my case the query needed more than 25 seconds - I would not classify this less performance.

Maybe an approach like this fits into the strategy and solves the performance issue.

          $qb = $this->db->getQueryBuilder();
          $qb->select('id')
              ->from(FeedMapperV2::TABLE_NAME)
              ->where("user_id = :userId")
              ->setParameter("userId", $userId, IQueryBuilder::PARAM_INT);
          $result = $qb->execute();
          if ($result instanceof \OCP\DB\IResult) {
              $feedIDs = $result->fetchAll();
              $newest = null;
              $qb = $this->db->getQueryBuilder();
              $qb->select("*")
                  ->from($this->tableName)
                  ->where("feed_id = :feedId")
                  ->orderBy("last_modified", "DESC")
                  ->addOrderBy("id", "DESC")
                  ->setMaxResults(1);
              foreach ($feedIDs as $id) {
                  $qb->setParameter("feedId", $id, IQueryBuilder::PARAM_INT);
                  $item = $this->findEntity($qb);
                  if (is_null($newest) || $newest->getLastModified() < $item->getLastModified()) {
                      $newest = $item;
                  }
              }
              return $newest;
          } else {
              throw new DoesNotExistException("Feeds not found");
          }
skuizy commented 3 years ago

Wow this is insane ! I have to disable the news extension as my server is dying since the 15.4.0 update :(

# User@Host: oc_admin[oc_admin] @ localhost []
# Thread_id: 13973  Schema: nextcloud  QC_hit: No
# Query_time: 390.019924  Lock_time: 0.001318  Rows_sent: 1  Rows_examined: 40844
# Rows_affected: 0  Bytes_sent: 2958
SET timestamp=1619890101;
SELECT `items`.* FROM `oc_news_items` `items` INNER JOIN `oc_news_feeds` `feeds` ON items.feed_id = feeds.id WHERE feeds.user_id = 'admin' ORDER BY `items`.`last_modified` DESC, `items`.`id` DESC LIMIT 1;
# Time: 210501 19:29:16
# User@Host: oc_admin[oc_admin] @ localhost []
# Thread_id: 14003  Schema: nextcloud  QC_hit: No
# Query_time: 39.629798  Lock_time: 0.255222  Rows_sent: 0  Rows_examined: 1
# Rows_affected: 1  Bytes_sent: 52
SET timestamp=1619890156;
UPDATE `oc_authtoken` SET `last_check` = 1619890111, `last_activity` = 1619890116 WHERE `id` = 501;
# Time: 210501 19:29:18
# User@Host: oc_admin[oc_admin] @ localhost []
# Thread_id: 13854  Schema: nextcloud  QC_hit: No
# Query_time: 32.115729  Lock_time: 0.000509  Rows_sent: 0  Rows_examined: 1
# Rows_affected: 1  Bytes_sent: 52
SET timestamp=1619890158;
UPDATE `oc_news_items` SET `unread` = 0, `url` = 'https://www.fashionbeans.com/article/mens-thick-wavy-unruly-hair/', `guid` = 'https://www.fashionbeans.com/article/mens-thick-wavy-unruly-hair/', `guid_hash` = 'fba20359cb9d9fa3019f4b
fab346a180', `pub_date` = 1579507209, `last_modified` = '1619890126596891', `title` = 'Dealing With Men’s Thick, Wavy & Unruly Hair', `author` = 'Lee Kynaston', `categories_json` = '[\"Men\'s Hairstyles\"]', `body` = 'An expert guide
 to thick, wavy and unruly hair, including the products, cuts &amp; styles you should go for in order to make the most of your hair texture', `enclosure_mime` = 'image/jpeg', `enclosure_link` = 'https://static1.fashionbeans.com/wp-co
ntent/uploads/2020/01/austin-wade-iQn82USu8gs-unsplash.jpg', `search_index` = 'an expert guide to thick, wavy and unruly hair, including the products, cuts & styles you should go for in order to make the most of your hair texturelee
kynastondealing with men’s thick, wavy & unruly hairmen\'s hairstyleshttps://www.fashionbeans.com/article/mens-thick-wavy-unruly-hair/', `fingerprint` = '21cf78a36dc00807d7fdf8333b738f93', `content_hash` = '8c53955c3b36ff1946a5696f8d
9cc384', `feed_id` = 94 WHERE `id` = 645265;

I don't know why so many rows are returned in the first querry. Here is the context :

CPU usage skyrockets as long as the news extension is loaded in my browser, not event trying to show a different folder.

Emporea commented 3 years ago

The News app ist barley usable for me since I upgraded to 15.4.x. The Android App takes severall attempts until it really fetches new articles from the server.

Takes sometimes about 2-4 trys and thats about 3 minutes.

With 15.3.x it took 2 secs.

starze commented 3 years ago

Hey @SMillerDev, @Grotax, thx for your great work, I use this app for many years!

Unfortunately this issue means to some less advanced users that they no longer can use your app. I hope you reconsider the priority of performance if it leads to a completely unusable system.

My database had 137561 entries (most of them unread) which made the news app completely unusable because each update resulted in a timeout.

It took me some time to find this issue and fix the problem. Here is what i did to work around it:

  1. Check current count

    select count(*) from oc_news_items;
    +----------+
    | count(*) |
    +----------+
    |   137561 |
    +----------+
  2. Delete all non starred items older 100 Days (read + unread)

    delete from oc_news_items where id in (select id from oc_news_items where pub_date < UNIX_TIMESTAMP(NOW() - INTERVAL 100 DAY) and starred = 0);
  3. Check count again

    select count(*) from oc_news_items;
    +----------+
    | count(*) |
    +----------+
    |    15411 |
    +----------+

After digging deeper into this issue i found your faq article about the problem with unread items. Too late for me (as i already fixed it with low level sql) but maybe useful for others running into the same problem: Database-table-grows-too-big

So according to the faq something like

occ news:updater:after-update --purge-unread 100

should workaround the mentioned problem, too (not tested).

These steps are only workarounds but for a real solution i see these options:

  1. Improve performance of sql queries (preferred)
  2. Delete not only read but also unread items automatically (i.e. new configuration option in admin-gui) App should self heal itself so you should also delete unread items when we know that they can lead to performance problems. I know automatically deletion is dangerous because you will loose already polled data but maybe this is slightly better than a broken app.
  3. Inform admin Maybe a warning in the configuration management overview could trigger admins to purge old entries with occ when item count hits a threshold
Grotax commented 3 years ago

I'm sorry but I don't think there is much I can do, if you know how to improve the situation, you can create a PR. Just because I'm the maintainer it doesn't mean that I have the time or the knowledge to fix this.

DBs are not my thing I could say I almost hate SQL, so I don't think I will be any help here.

skuizy commented 3 years ago

As this issue is stalling, has anyone a good alternative to the news app that can be integrated to a nextcloud instance ? The order by statements are really giving my odroid hugs of deaths :(

nRaecheR commented 3 years ago

It seems that 16.0.0 is even slower than 15.4.x. Using the web interface and switch folders is painfully slow now again and scrolling through the items is now a CPU hog on the client. The items and related items are shown very slowly with a hang of the browser during the load of the item. I understand that keeping the app compatible and working with future NC releases but the performance impact is severe and the app will get more and more unusable.

albatros69 commented 3 years ago

It seems that 16.0.0 is even slower than 15.4.x. Using the web interface and switch folders is painfully slow now again and scrolling through the items is now a CPU hog on the client. The items and related items are shown very slowly with a hang of the browser during the load of the item. I understand that keeping the app compatible and working with future NC releases but the performance impact is severe and the app will get more and more unusable.

I concur with that. The WebUI is slow to a crawl since the update to 16.0.0 and it becomes barely usable. The browser is hogging the CPU for almost every click.

Emporea commented 3 years ago

I am not able to use the news apps ( WebUI / AndroidApp ) anymore since 15.4.x

I can imagine it's hard to find ways to stay compatible with future nextcloud releases while maintaining performance. I certainly don't have the skills for this task, but there must be a way people can still use this app, even when the database has more than 100 entries..

paroj commented 3 years ago

have been hit by this with the update to 16.0.0. Even after doing:

occ news:updater:after-update --purge-unread 100

I now have ~500 unread items and every click (folder change, mark item read) takes about 2s on a ryzen quad-core server.

Its honorable that you want to switch to a recent internal API, but you started doing something straight-out stupid recently, like iterating 1000 times over those 500 items..

In the absence of maintainer-power I would rather suggest to drop Postgres support than degrading to these performance levels.

edit:

nRaecheR commented 3 years ago

I suspect the 16.0.0 slowdown is another problem than the database "optimization" of 15.4.0. It seems to be related to Web-UI only, accessing the data from any other client (tested with News on Android) seems to be as "performant" as with 15.4.0. But with 16.0.0 any interaction is very slow, even navigating to another Nextcloud app. Edit: Only tested with Firefox on Ubuntu Linux, not tested with Chromium or any other browser.

nRaecheR commented 3 years ago

I've tested it with latest Chromium and I can confirm that the scrolling through the articles is fast as expected but the switch between folders and every other interaction (mark as read, change to other app etc. ) seems to have a delay too.

oldnomad commented 3 years ago

I've tested it with latest Chromium and I can confirm that the scrolling through the articles is fast as expected but the switch between folders and every other interaction (mark as read, change to other app etc. ) seems to have a delay too.

As noted in #1433, most of the slow-down in Web UI is in js/controller/ContentController.js, in method getRelativeTime(). With recent changes, this method seems to be called more frequently, and it uses Node.js module moment, which is scheduled to be dropped from Nextcloud base (it seems to be the only place where this module is used in News). It seems that this module spends insane amount of time complaining to JavaScript console about being deprecated. Rewriting getRelativeTime() or dropping it completely solves the problem.

SMillerDev commented 3 years ago

Pull requests to improve performance are welcome.

Emporea commented 3 years ago

Pull requests to improve performance are welcome.

Is it possible for you to shortly explain what the changes were from 15.3.x to 15.4.x that made the News app (i guess database request) so much slower?

Grotax commented 3 years ago

In short we switched from hard coded SQL statements in the code to actually creating the querry by calling functions.

You can see in a comment further up links how it looked like.

Apparently some of the queries are slower now. The migration was obviously not 1:1.

Also we have the issue that we try to support sqlite, MySQL, MariaDB and PostgreSQL

And all of them have thier own weird quirks and features.

nRaecheR commented 3 years ago

I've applied the patch from #1433 but it does not fix the slow interaction speed of the Web-UI. There are additional warnings in the developer console about deprecated functions used in the app.

As a user I can't understand why every version of the app makes it more slowly and why the maintainers are closing (see #1433) obvious problem reports with the statement that there is no maintainer for that part of the app. The bug is still there even if there is no maintainer for it to fix it.

15.4.0 makes the server side really slow, 16.0.0 the client side. Both problems won't be addressed it seems. The maintainers don't care about the users (and their problems and reports), this is obvious when you follow the whole RPi/32 Bit discussion in the other bug reports too. The app won't work with 32 bit servers, the app won't work with Firefox anymore and the app needs a super high performance server to handle more than 500 unread items?

SMillerDev commented 3 years ago

The maintainers don't care for the users (and there problems and reports), this is obvious when you follow the whole RPi/32 Bit discussion in the other bug reports too.

I care about myself as my user, if anyone else wants to be cared for in the news app they can care for themselves or they can pay someone to care for them. https://mikemcquaid.com/2018/03/19/open-source-maintainers-owe-you-nothing/ is important for you to read because you seem to be misunderstanding how this dynamic works.

nRaecheR commented 3 years ago

Haha, this is called "Totschlagsargument" in german....if you're out of arguments you will post messages like these....

Grotax commented 3 years ago

I understand all your frustrations about this, some simple facts about this project.

News was completely abandoned a few years ago, already before that point the UI was no longer updated because the maintainer of the UI part was no longer interested.

Unfortunately since then not much has moved forward.

Furthermore we as the core project members have decided to not keep issues open for forever, and also that issue templates are mandatory. So if an issue fails to get solved or picked up in a certain period of time it gets closed. Because we simply can't manage an issue tracker with hundreds of open issues, I'm aware that other projects handle this differently if that is necessarily better is questionable. We have the right to decide how we want to run this repository and therefore we do it this way.

And on the point of expectation, neither I nor the other active developers owe you anything. We know that it's broken but as you see there is nobody fixing it.

If you are unable to understand that and keep pushing for a solution I will have to lock these issues and prevent any form of communication.

nRaecheR commented 3 years ago

Thank you, Benjamin. I understand that it is time to look for an alternative as the News app is unmaintained. And I fully understand the problems you're facing as a maintainer. You don't have to care about the need of the users but about the state of your software. And as you said We know that it's broken but as you see there is nobody fixing it., so it's time to move on.

rplasson commented 3 years ago

I noticed that after a restart of the database on the server ('systemctl restart mariadb'), the news app was much more reactive on the web client, i.e. totally usable, albeit still slow (but less than 1 sec lags when clicking on entries).

I do not know what this means, but it hope it may help to identify the problem.