$ the-wire · showcase
Open WebUI defaults presence-throttle on, streams web fetches to disk
By RepoJournal · Filed · About Open WebUI
Open WebUI now throttles last_active_at writes by default and streams web-fetched documents to disk instead of buffering them in memory.
Presence tracking used to write each user's last_active_at on every authenticated request, API key request, and websocket heartbeat, with the existing throttle shipping unset, meaning no throttle at all. That could mean one UPDATE plus COMMIT per user per request, and the 30 second frontend heartbeat alone cost 2 write transactions per minute per open tab before any UI traffic. The throttle now defaults on, cutting that write load on stock deployments [1].
Web-fetched documents in the binary branch used to read the entire response body into memory before writing it out. They now stream in blocks, apply the configured file size limit the same way the sibling URL endpoint already does, and remove the temporary file when a download fails partway instead of leaving it behind [2].
Deleting an external knowledge base now clears its connection only when an admin removes the last knowledge base referencing it, matching the connection delete route [3]. A sidebar refresh is skipped when a chat is dropped back exactly where it already is [4], and viewport scroll position is preserved when older messages load above it [5].
Action items
- → Upgrade to a build containing commit 043cf330 before your next deployment to gain the default presence-throttle. open-webui/open-webui [plan]
- → Verify web-fetch file size limits and cleanup behave as expected after this change. open-webui/open-webui [monitor]
References
- [1] perf: throttle last_active_at writes by default (#28177) ↗ open-webui/open-webui
- [2] refac: stream web-fetched documents to disk instead of buffering them (#28945) ↗ open-webui/open-webui
- [3] refac: keep external connections until their last knowledge base is removed (#28113) ↗ open-webui/open-webui
- [4] fix: skip the sidebar refresh when a chat is dropped back where it already is (#28664) ↗ open-webui/open-webui
- [5] fix: keep the viewport in place when older messages load above it (#28657) ↗ open-webui/open-webui