Commit Graph

99 Commits

Author SHA1 Message Date
Athou
00d7be735a static random fields should not be used with graalvm as they are seeded at compile time and thus not random anymore 2026-06-13 12:03:50 +02:00
Athou
1388fba8e4 apply xml cleaning to opml files 2026-06-13 11:32:57 +02:00
Athou
c43644861f use a secure algorithm to generate image urls so that only server-side generated urls can be used 2026-06-13 11:21:16 +02:00
Athou
5755ff762b Trie is thread-safe, no need to recreate one every time 2026-05-22 20:29:48 +02:00
Athou
4a8be29616 add support for declared icons in feeds (#2048) 2026-05-10 21:05:33 +02:00
Athou
f207bfaddd format empty records and anonymous types as a single line 2026-05-08 17:56:26 +02:00
Athou
f826f1d543 create comparator only once 2026-04-27 18:01:02 +02:00
Athou
6d2fb5acc2 refactor 2026-04-10 15:17:27 +02:00
Ingo Kegel
1d23907652 Use batched IN clause for GUID existence check during feed refresh
Instead of fetching all existing GUID hashes for a feed from the database only check the GUIDs present in the current feed XML using a SQL IN clause. GUIDs are partitioned into batches of 1000.

Also adds an integration test verifying that refreshing an up-to-date feed does not create duplicate entries.
2026-04-10 10:13:37 +02:00
Ingo Kegel
76dbbdfbf9 batch guid existence check on feed refresh
Instead of querying the database once per entry to check if it already
exists, fetch all existing guids for a feed in a single query upfront
and filter new entries in memory before the per-entry loop.

The per-entry findExisting call inside addEntry is kept as a safety net
for concurrent inserts, but is now only reached for new entries.

Profiling in real usage showed a ~50% reduction in guidHash queries,
with the check falling from the most expensive query to sixth in the ranking.
2026-03-18 18:56:40 +01:00
Athou
eaa5bc896e stop the application between tests to make sure that there are no active transactions when we truncate the tables 2026-03-04 13:58:06 +01:00
Athou
78c017ddaf wait for tasks to complete when shutting down 2026-03-04 12:49:06 +01:00
Athou
de7e4e9c69 add a button for testing push notification settings 2026-02-19 22:50:34 +01:00
Athou
2be61e8b1c refactor 2026-02-18 20:37:11 +01:00
Louis POIROT--HATTERMANN
e54151d2eb feat: send notification for new entries with Gotify, ntfy or Pushover, configurable per feed. 2026-02-15 18:45:28 +01:00
Athou
799e6c082c cleanup 2026-01-06 22:53:37 +01:00
Athou
9c058cf6d6 disable xml entity expansion limits enabled in JDK24+ (#1961) 2025-11-17 06:43:55 +01:00
Athou
e5c271ca1c add support for more emojis (#1955) 2025-11-16 09:37:36 +01:00
Athou
297c76006a use more records 2025-10-02 21:54:40 +02:00
Athou
c548462eef cleanup 2025-09-27 19:10:41 +02:00
Athou
58bf86d25d remove warnings 2025-07-30 13:30:27 +02:00
Athou
ff7aa890a6 fix build warning 2025-07-28 19:55:36 +02:00
Athou
23a91aab12 providers can now return multiple urls 2025-07-21 16:57:10 +02:00
Athou
085a3cbb50 unwanted entries are already filtered at the dao level 2025-07-21 16:57:10 +02:00
Athou
fb9d875c31 extract image proxying from FeedUtils 2025-07-21 16:57:10 +02:00
Athou
f7ae2e6689 add even more integration tests 2025-07-21 11:50:10 +02:00
Athou
f894fdf564 extract url utils from FeedUtils 2025-07-20 07:26:43 +02:00
Athou
d6df979d0d remove more warnings 2025-07-19 23:47:22 +02:00
Athou
3f09e3ca64 remove warnings 2025-07-19 11:33:38 +02:00
Athou
0f2de651ff remove more warnings 2025-07-18 23:07:40 +02:00
Athou
3b8f62ff11 fix sonar warnings 2025-07-18 21:49:00 +02:00
Athou
fb7f041454 normalize line endings 2025-03-10 08:48:26 +01:00
Athou
c1305b56e3 insert jakarta imports where javax import were positioned 2025-03-02 11:37:06 +01:00
Athou
60fdc79563 don't expose rome's FeedException 2025-02-18 08:57:24 +01:00
Athou
6729ebc6ea throw a specific exception if we can't parse the url's content (#1684) 2025-02-18 07:41:02 +01:00
Athou
f519aa039f block local addresses to prevent SSRF attacks 2025-02-14 16:20:04 +01:00
Athou
c3782bd7d2 also constrain to lower bound 2025-02-12 18:04:56 +01:00
Athou
469420b5bf feed refresh engine previously hardcoded values are now configurable (#1677) 2025-02-12 17:08:20 +01:00
Athou
bde556d41f start to back off when we repeatedly receive a 429 2025-02-12 08:00:27 +01:00
Athou
8edd6a1e2d correctly handle 0 as a Retry-Header value (#1671) 2025-02-05 07:50:10 +01:00
Athou
37cf711cbc add support for the Retry-After header sent by OpenRSS 2025-01-27 07:48:19 +01:00
Athou
62d3ed16e6 remove DOCTYPE declarations (#1260) 2025-01-10 16:18:49 +01:00
Athou
7a838cddad honor Cache-Control response header (#1615) 2024-11-29 17:06:57 +01:00
Athou
8eefb1bcfb add http cache to avoid fetching feeds too often (#1431) 2024-09-14 14:00:15 +02:00
Athou
cca2d49cc3 Revert "reduce artifact size by using a smaller library for charset detection" because juniversalchardet doesn't support as many charsets as icu4j 2024-09-13 23:40:13 +02:00
Athou
f4a43e9950 only compute rtl once by storing it in the database on fetch 2024-09-13 22:25:02 +02:00
Athou
31cf4d8bb2 use our own bidi detector to drop 10Mb from gwt 2024-09-13 16:05:21 +02:00
Athou
19bcc2c0da reduce artifact size by using a smaller library for charset detection 2024-09-13 14:48:24 +02:00
Athou
9930bb68b2 rename variable because it now contains a duration 2024-09-10 20:47:08 +02:00
Athou
ac1a927836 remove google-api-services-youtube because it doesn't play nicely with native-image 2024-08-19 23:55:38 +02:00