[webkit-changes] [WebKit/WebKit] e01270: [ macOS ] storage/indexeddb/database-transaction-c...

Sihui noreply at github.com
Fri Sep 15 11:21:31 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e012709bf3974ae056e29b36220178b5e867d9e5
      https://github.com/WebKit/WebKit/commit/e012709bf3974ae056e29b36220178b5e867d9e5
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-09-15 (Fri, 15 Sep 2023)

  Changed paths:
    M LayoutTests/storage/indexeddb/database-transaction-cycle.html
    M LayoutTests/storage/indexeddb/resources/database-transaction-cycle-iframe.html
    M Source/WebCore/Modules/indexeddb/IDBTransaction.cpp

  Log Message:
  -----------
  [ macOS ] storage/indexeddb/database-transaction-cycle.html is a consistent failure
https://bugs.webkit.org/show_bug.cgi?id=261535
rdar://115457418

Reviewed by Brady Eidson.

IDBTransaction's wrapper is kept alive when its state is not Finished (see IDBTransaction::virtualHasPendingActivity()).
However, its state is never changed from Aborting to Finished when the failure is caused by closed connection. To fix
that, we now invoke didAbort() in IDBTransaction::connectionClosedFromServer which performs necessary cleanup tasks.

The test also has an issue that it uses global variable for IDBObjectStore, which will keep IDBTranaction alive (see
IDBObjectStore::ref()). To avoid such issue, this patch removes the use of global variables. In addition, IDBTransaction
can be destroyed when it's no longer active (and there is no reference from JS), so we don't need to set url of the
iframe.

* LayoutTests/storage/indexeddb/database-transaction-cycle.html:
* LayoutTests/storage/indexeddb/resources/database-transaction-cycle-iframe.html:
* Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::connectionClosedFromServer):

Canonical link: https://commits.webkit.org/268031@main




More information about the webkit-changes mailing list