Feeds silently stop importing — download URL and “get feed items of” both succeed, refresh returns true, nothing is imported (4.3.2)
DEVONthink 4.3.2, macOS 26.6.2 (25G83), Apple silicon.
On 18 August, 42 of the 132 feeds in one database stopped importing. The rest continue to import normally on the hourly cycle. There is no error anywhere — not in Window > Log, not in Console.log, not in the unified log.
What makes this odd is that I can show, from AppleScript, that DEVONthink both fetches and parses the content it is not importing.
LAYER COMMAND RESULT
Fetch download URL OK 40,700 bytes, today’s feed
Parse get feed items of base URL OK all 50 items returned
Import refresh record ?? returns true, imports none
Integrity verify database OK 0 errors / 0 invalid / 0 missing
The bytes arrive, DEVONthink’s own parser reads all 50 items out of them, and none reach the database. The feed’s modification date stays at 18 August and it has zero children created since.
Minimal check
tell application id “DNtp”
set theFeed to «a feed record that has stopped importing»
– fetch: works
set src to (download URL (URL of theFeed))
– parse: works, returns the full item list
set theItems to (get feed items of (src as string) base URL (URL of theFeed))
– import: returns true, changes nothing
refresh record theFeed
end tell
(Pass the source to get feed items of as text read with as «class utf8» rather than coercing download URL’s data with as string — the coercion silently yields 0 items and looks like a parser fault. That caught me out for a while.)
One possible pattern: every failing feed is set to import as Markdown
Cross-tabulating the item Kind each feed produces against whether it is still importing:
ITEM KIND FAILING IMPORTING FAIL RATE
Markdown Document 42 21 67%
HTML text 0 2 0%
All 42 failing feeds import as Markdown Document. That is 42 of 42, with no exceptions.
I want to be careful not to overstate it: 21 Markdown feeds are importing perfectly well, so the format alone clearly does not decide it, and the “HTML is unaffected” column is only two feeds and proves nothing by itself. But since the fault is already isolated to the import step, and every single failure is on the Markdown path, it seemed worth reporting.
What I have ruled out, and how
RULED OUT HOW
The publishers curl returns HTTP 200 with items dated today, every feed
Network / TLS / trust DEVONthink’s OWN fetcher retrieves current content
Database damage verify database returns 0 (optimize not run, nothing to fix)
Restarting rebooted, and DT quit+relaunched, after feeds stopped;
hourly cycle resumed and imported for the WORKING feeds;
the 42 stayed dead through both
One publisher/format the 42 span unrelated hosts: arXiv/Feedly category feeds,
Substack newsletters, McKinsey Insights, Apple Machine
Learning Research, O’Reilly Radar, Simon Willison’s Weblog,
Google News feeds, alert-service feeds
Group/database scope failing and working feeds are mixed within the same groups
I saw the SSL root-certificate advisory and the January thread about DEVONtechnologies Community - Latest topics . That concerns DEVONtechnologies’ own domains; these are third-party hosts, reached successfully by DEVONthink itself.
Configuration
Global “Check for feed updates” is 60 minutes; affected records carry a 900-second interval. All feed records are intact with correct URLs. Item counts per feed range from 5 to about 9,000.
Questions
- Is there per-feed import state — a cursor, an ETag/Last-Modified cache, a seen-GUID store — that could reach a condition where every fetched item is judged already-seen and discarded, with nothing logged?
- Is refresh record returning true meaningful, or does it only mean “queued”? It also returns true and changes nothing on feeds that are importing on the hourly cycle, so I cannot use it as a trigger in either direction.
- Given every failure is on the Markdown import path — is there a known issue converting feed items to Markdown that could fail closed and silently drop the item?
- Is there a way to force a full re-read that does not involve deleting and recreating the feed? Several hold years of history I would rather not strand.
- Anything I can switch on to make the import step log what it decides?
Happy to send a diagnostics report or run anything specific.