RESOLVED FIXED309386
[IndexedDB] Recover IndexedDB connections after network process crash without page reload
https://bugs.webkit.org/show_bug.cgi?id=309386
Summary [IndexedDB] Recover IndexedDB connections after network process crash without...
Brandon
Reported 2026-03-06 15:00:25 PST
When the NetworkProcess crashes, IndexedDB becomes permanently broken for the lifetime of the page. Documents and workers cache an IDBConnectionProxy pointing to a dead IDBConnectionToServer (m_serverConnectionIsValid == false), and the DOMWindowIndexedDatabase/WorkerGlobalScopeIndexedDatabase supplements cache an IDBFactory bound to that dead proxy. New indexedDB.open() calls fail with "Connection to Indexed Database server lost" until the page is reloaded. Fix this by clearing the stale proxy caches when the network process connection is lost: - Document::clearIDBConnectionProxy() nulls m_idbConnectionProxy so the next idbConnectionProxy() call lazily fetches a fresh proxy from Page::idbConnection(), and removes the DOMWindowIndexedDatabase supplement so the IDBFactory is recreated. - Page::clearIDBConnectionOnAllDocuments() clears the page-level IDBConnectionToServer and all document proxies. - For workers, Page::refreshIDBConnectionForWorkers() creates a new IDBConnectionToServer and distributes its proxy to all worker threads via WorkerGlobalScope::replaceIDBConnectionProxyOnAllWorkers(), which iterates allWorkerGlobalScopeIdentifiers and posts a task to each worker to replace its cached proxy and remove its WorkerGlobalScopeIndexedDatabase supplement. - NetworkProcessConnection::didClose() calls refreshIDBConnectionForWorkers() after connectionToServerLost() finishes tearing down the old connection, so workers receive the new proxy after all error notifications from the old connection. - Supplementable::removeSupplement() is added to support clearing cached supplements.
Attachments
Radar WebKit Bug Importer
Comment 1 2026-03-06 15:00:32 PST
Brandon
Comment 2 2026-03-06 15:03:49 PST
EWS
Comment 3 2026-03-10 21:36:37 PDT
Committed 309032@main (3c147a650200): <https://commits.webkit.org/309032@main> Reviewed commits have been landed. Closing PR #60094 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.