From e59a283db5f850dd791df021e22b599ecc70a824 Mon Sep 17 00:00:00 2001 From: Arjun Satarkar Date: Mon, 31 Jul 2023 03:11:12 +0530 Subject: Get feed info for every displayed entry in one query, fix crash Replacing the old approach where for every entry the title & tags were queried separately. If 50 entries are displayed, this is 100 extra queries that are now one query. If the maximum 1000 are displayed, this is 2000 queries to one. Benchmarking this change with ab -n 500 -c 100 http://localhost:8000/?page_num=1&per_page=1000 with 1000+ entries present, we get: (PREVIOUS) Time taken for tests: 0.840 seconds (NEW) Time taken for tests: 0.476 seconds The crash occurred when get_feeds() was called with get_tags=True and the query returned at least one feed with no tags. This was not handled properly by later code. It was not noticed when testing the previous commit since all feeds in the test instance had one or more tags. --- views/index.tpl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'views') diff --git a/views/index.tpl b/views/index.tpl index 738adb6..0145a4e 100644 --- a/views/index.tpl +++ b/views/index.tpl @@ -116,7 +116,7 @@
- % tags = core.get_feed_tags(entry["feed_id"]) + % tags = referenced_feeds[entry["feed_id"]]["tags"] % for i, tag in enumerate(tags): % if i > 0: {{", "}} @@ -128,7 +128,8 @@
- {{core.get_feed_title(entry["feed_id"])}} ({{entry["feed_id"]}}) + {{referenced_feeds[entry["feed_id"]]["title"]}} + ({{entry["feed_id"]}})
-- cgit v1.2.3-57-g22cb