Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 147fbb9c535fe651cc56b7cdc5e2d87fa75c673a
https://github.com/WebKit/WebKit/commit/147fbb9c535fe651cc56b7cdc5e2d87fa75c673a
Author: Ahmad Saleem <[email protected]>
Date: 2026-10-13 (Tue, 13 Oct 2026)
Changed paths:
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/Modules/indexeddb/IDBDatabase.cpp
Log Message:
-----------
REGRESSION(323066@main):
http/tests/IndexedDB/transaction-abort-pending-requests-stop.html is a flaky
failure because IDBDatabase::stop() skips
https://bugs.webkit.org/show_bug.cgi?id=327323
rdar://189863571
Reviewed by Brady Eidson.
323066@main made IDBDatabase::stop() finalize committing and aborting
transactions locally, but only inside the if (!m_closedInServer) block.
Before that block runs, close() calls maybeCloseInServer(), which waits
for active and committing transactions but not aborting ones. When the
only remaining transaction is aborting, maybeCloseInServer() closes the
connection in the server and sets m_closedInServer, so the cleanup
never runs.
If the abort is still held on the client waiting for didStart, the
server drops the pending transaction when the connection closes. No
didStart or didAbort arrives, the transaction stays in the Aborting
state, and virtualHasPendingActivity() keeps it alive forever. Whether
this happens depends on whether didStart and the abort round trip
complete before the frame is removed, which is why the test is flaky.
Finalize committing and aborting transactions in stop() whether or not
the connection was already closed in the server.
* LayoutTests/platform/glib/TestExpectations: Remove flaky expectation.
* Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::stop):
Canonical link: https://commits.webkit.org/323686@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications